表用户:
id firstname lastname email avatar
1 Coman Paul x@y.com ./images/a.png
表友谊:
id user1 user2
1 1 2
2 1 5
3 3 1
4 2 3
用户1
是2,3,5
用户2
是1,3
通过此查询,我可以显示我的朋友..(id = 1的用户)
select
u.firstname, u.lastname, u.email, u.avatar
from
users u
inner join
friendships f on f.user2 = u.id
where
f.user1 = 1
union
select
u.firstname, u.lastname, u.email, u.avatar
from
users u
inner join
friendships f on f.user1 = u.id
where
f.user2 = 1
我想要做的是显示与我不是朋友的其他用户...显然将=
更改为<>
将无效,因为用户2和3之间的友谊可以因为显示他们不是朋友形式,但在其他方面他们是我的朋友......
那么,在我显示我的朋友列表(第一个查询)之后,如何在其下显示另一个非朋友列表...
为了更好地理解点击Facebook上的帖子,你会看到第一个显示的用户是你的朋友......然后其余的人......
有代码的php部分......
$numrows = mysql_num_rows($querym) or die (mysql_error());
if($numrows!=0)
{
Echo '<div id="members"> <ul >';
while ($row = mysql_fetch_assoc($querym))
{
$firstname = $row['firstname'];
$lastname = $row['lastname'];
$email = $row['email'];
$avatar = $row['avatar'];
Echo '<li>......';
//printing the variables and all data
}
}
答案 0 :(得分:1)
您希望获得与某个用户没有友谊的所有用户。但是它们可能会以两种方式中的一种出现,所以你必须确保它们不像用户1那样处于友谊中而不是像用户2那样处于友谊中:
select u.firstname, u.lastname,u.email,u.avatar from users u
where id not in (select user1 from friendships where user2 = 1)
and id not in (select user2 from friendships where user1 = 1)
编辑:您可能还想添加:
and id <> 1
除非在其他地方处理,否则不要将自己显示为非朋友。