从具有多个条件的2个表中选择

时间:2013-12-18 10:40:06

标签: sql

我成功地问了这个问题并使用了这个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双向选择

1 个答案:

答案 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))

不漂亮,但应该有效。不确定在线逻辑,但我相信如果你需要,你可以解决这个问题。