我成功地问了这个问题并使用了这个sql命令
SELECT u . id, jmeno, email
FROM friends f INNER JOIN login u ON f.idfriend = u.id
WHERE f.iduser =44 AND u.online =1
Friends :
id iduser idfriend
0 44 56
1 44 102
2 10 66
3 10 85
4 44 10
5 56 44
Users:
id name email isonline
44 john john@gmail.com 1
10 joe joe@yahoo.com 1
185 mark mark@so.com 0
我得到了iduser 44的所有朋友,但我也想从idfriend reverse获取朋友。 喜欢有idfriend 44和id用户56我也想选择idfriend 44
我的意思是我不想要一个关系有多个记录,我想要两种方式 喜欢
友
1 44 52
2 52 44
我想要的
1 44 52
双向选择
答案 0 :(得分:0)
select case when me.id = 44 then l2.Id else l1.Id end FriendId,
case when me.Id = 44 then l2.email else l1.email end FriendEmail
from friends me
inner join login l1 on l1.id = me.friendId
inner join login l2 on l2.id = me.Id
where ((me.id = 44 and l1.online = -1)
or (me.friendId = 44 and l2.online = -1))
不漂亮,但应该有效。不确定在线逻辑,但我相信如果你需要,你可以解决这个问题。