2013-09-23 44 views
0

下面是我的查詢,它返回會話用戶的朋友。友誼查詢 - PHP&mysql

$new_friends = $db->query(" 
    SELECT user.id, user.name_surname 
    FROM user 
    JOIN friendship ON user.id = friendship.sender_id or user.id = friendship.receiver_id 
    WHERE (friendship.receiver_id =" . $_SESSION["SES_USER_ID"] . " OR friendship.sender_id =" . $_SESSION["SES_USER_ID"] . ")     
    AND user.id != " . $_SESSION["SES_USER_ID"] . ""); 
    $new_friends->setFetchMode(PDO::FETCH_ASSOC); 
    $new_friends_data = $new_friends->fetchAll(); 

它工作良好,沒有任何問題。現在我想用新的屬性改善我的網站,所以我想在我的網站上添加「NEW PEOPLE」部分。獲取的人不得會話用戶的朋友和他/她自己。

我試着使用下面的代碼「你可能知道」部分。但它會再次返回會話用戶的朋友。

$new_friends2 = $db->query(" 
    SELECT user.id, user.name_surname 
    FROM user 
    JOIN friendship ON user.id = friendship.sender_id or user.id = friendship.receiver_id 
    WHERE (friendship.receiver_id !=" . $_SESSION["SES_USER_ID"] . " OR friendship.sender_id !=" . $_SESSION["SES_USER_ID"] . ")     
    AND user.id != " . $_SESSION["SES_USER_ID"] . ""); 
    $new_friends2->setFetchMode(PDO::FETCH_ASSOC); 
    $new_friends_data2 = $new_friends->fetchAll(); 
    //look carefully I change some equations from = to != 

我該如何解決?

基本上我想返回不是會話用戶朋友的人。

+0

@Mihaiı認爲我的代碼ses id不重要,因爲基本上我想返回不是會話用戶朋友的人 – hakiko

+0

您應該在第二部分的WHERE子句中使用AND,而不是OR。 – Ananth

回答

0
WHERE (friendship.receiver_id !=" . $_SESSION["SES_USER_ID"] . " OR friendship.sender_id !=" . $_SESSION["SES_USER_ID"] . ") 

OR這裏允許這些列中的一個具有SES_USER_ID其更改爲與

+0

我改變「或」改爲「和」仍然是返回的朋友 – hakiko

+0

你可以發佈一些示例數據嗎?1和2查詢有什麼區別? – Mihai

0

你提的問題不夠清晰!

但看着這個問題,你應該用and代替or