2014-10-07 47 views
0

我的PHP會話:選擇離開加入

$get_user = $_SESSION['id']; //id of the user that logged in 

我的查詢是:

$query_select = "SELECT i.users_id,s.seen, CONCAT_WS(' ', i.users_fname, i.users_lname) 
AS full_name 
FROM tbl_request AS f 
LEFT JOIN tbl_usersinfo AS i ON i.users_id = f.user_id 
LEFT JOIN tbl_status AS s ON s.user_id = f.user_id 
WHERE (f.user_id = $get_user || f.another_user = $get_user) && f.status = 'accepted' 
GROUP BY full_name ORDER BY seen DESC 

tbl_request:

user_id another_user status 
1    2  'accepted' 
1    5  'accepted' 
3    1   'waiting' 
4    1   'accepted' 

tbl_usersinfo

users_id users_fname  users_lname 
1    michael   jackson 
2    michael   jordan 
3    bat    man 
4    will    smith 
5    sean    kingston 

tbl_status

user_id  seen 
1   'online' 
2   'offline' 
3   'online' 
4   'online' 
5   'offline' 

讓我們假設會話等於1,此查詢將導致到:

users_id full_name  seen 
4   will smith online 

它應該是:

users_id full_name   seen 
    2  michael jordan  offline 
    4  will smith   online 
    5  sean kingston  offline 

我想選擇所有的狀態即等於「接受」,但上述查詢僅在會話等於another_user時顯示。我希望我的查詢具有靈活性。例如,當會話等於user_id時,它應該選擇another_user,因爲那是他朋友的ID。

+0

你可以給查詢的輸出的例子嗎? – 2014-10-07 13:00:35

+0

只是刪除f.another_user = $ get_user – 2014-10-07 13:02:03

+0

它只會返回用戶id ='1',查詢應該選擇another_user – 2014-10-07 13:17:13

回答

1

的問題是,在你的LEFT JOIN是你總是比作f.user_id,但它應該是f.user_id只有當你的$get_useranother_user列...以及在其他的方式一樣...我建議你改造完成查詢......

有很多方法可以做到這一點,但也許simplier將使用UNION

SELECT i.users_id,s.seen, CONCAT_WS(' ', i.users_fname, i.users_lname) 
AS full_name 
FROM tbl_request AS f 
LEFT JOIN tbl_usersinfo AS i ON i.users_id = f.another_user 
LEFT JOIN tbl_status AS s ON s.user_id = f.another_user 
WHERE f.user_id = $get_user && f.status = 'accepted' 
UNION 
SELECT i.users_id,s.seen, CONCAT_WS(' ', i.users_fname, i.users_lname) 
AS full_name 
FROM tbl_request AS f 
LEFT JOIN tbl_usersinfo AS i ON i.users_id = f.user_id 
LEFT JOIN tbl_status AS s ON s.user_id = f.user_id 
WHERE f.another_user = $get_user && f.status = 'accepted' 
GROUP BY full_name ORDER BY seen DESC 
+1

WOOOOOOWW,謝謝siiiirr你是一個救生員:)))我一直在努力弄清楚了2個小時。 – 2014-10-07 13:25:56

+0

歡迎您:-) – Legionar 2014-10-07 13:29:12