2013-12-21 36 views
1

我需要顯示「你可能知道的人」基於用戶的當前朋友和朋友的建議應該考慮阻止用戶,如果用戶A阻止用戶B,A應該不會看到用戶B或反之亦然他們的朋友建議 這裏是我的表結構如何建立一個查詢「你可能知道的人」

mnc_users

id | username | email  | fullname 
--------------------------------------------------- 
1 | userA  | [email protected] | User Alpha 
2 | userB  | [email protected] | User Bravo 
3 | userC  | [email protected] | user c 
4 | userd  | [email protected] | user del 

mnc_friends

uid | fid | time 
------------------------- 
1 | 3 | 1363859398 
3 | 1 | 1363859398 
4 | 1 | 1368854898 
1 | 4 | 1368854898 
3 | 2 | 1363846116 
2 | 3 | 1363846116 
2 | 4 | 1363846116 
4 | 3 | 1363846116 

mnc_blocked

id | uid | bid 
-------------------- 
1 | 1 | 2 

mnc_frnd_rqsts

uid | fid 
----------- 
5 | 1 

我如何使用PHP和MySQL在這種情況下,用戶的建議顯示?

+0

哪些是你的表中的用戶建議? –

+0

我沒有一個建議表我想在一個頁面中動態顯示 –

回答

2

如果u編輯this answer添加幾你會得到它的東西

$user_id = 1; 

    $sql = " SELECT * FROM mnc_users WHERE id NOT IN(
              SELECT fid FROM mnc_friends WHERE uid='$user_id' AND fid!='$user_id' 
              ) 
             AND id NOT IN(
              SELECT bid FROM mnc_blocked WHERE uid='$user_id' 
              ) 
AND id NOT IN(
          SELECT fid FROM mnc_frnd_rqsts WHERE uid='$user_id' 
              ) 
     "; 
2

試試這個

假設我們正在試圖讓人民爲用戶A:ID = 1

$user_id = 1; 

和SQL將

$sql = " SELECT * FROM mnc_users WHERE id IN(
             SELECT fid FROM mnc_friends WHERE uid='$user_id' AND fid!='$user_id' 
             ) 
            AND id NOT IN(
             SELECT bid FROM mnc_blocked WHERE uid='$user_id' 
             ) 
    "; 
+0

這一個不工作它顯示人已經在我的朋友列表中的whoz –

+0

是的現在你可以再次運行這個查詢爲你的朋友一個接一個PHP。你會找到朋友的朋友 –

+0

我的意思是如果我運行這個查詢,我得到我當前的朋友列表 –

相關問題