我正在用php构建一个简化的社交网站。我有两张桌子,我的朋友桌和朋友桌。
myfriends表有friend_id1friend_id2列。Friends表有friend_idprofile_nameemail列。
myfriends表将两个朋友链接在一起。假设是单向关系,而不是双向关系。这意味着朋友有朋友,但不是相反。
举例来说,我们只需要4个成员1001,1002,1003,1004
如果1001知道1002和1003(假设反之亦然),但1002、1003不知道对方,1004不知道任何人,myfriends表将包含以下条目。

(1001,1002),(1001 ,1003),(1002 ,1001),(1003, 1001)

我需要的查询将得到所有非朋友的人。这是我为得到所有朋友而提出的查询。friend_id是friendstable.myfriends表中没有主键的主键。
 SELECT friends.profile_name
 FROM friends
 INNER JOIN myfriends ON friends.friend_id=myfriends.friend_id1
 WHERE myfriends.friend_id2='$friendID'";

希望大家都清楚这个问题。

最佳答案

$sql="select profile_name from friends
where friend_id<>login_user_id
and
friend_id NOT IN( select friend_id2 from myfriends where friend_id1=login_user_id);

10-08 19:44