2013-12-21 35 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

我的意思是如果我运行这个查询,我得到我当前的朋友列表 –

相关问题