我有这两个表:用户和友谊。我想找到两个用户之间的共同朋友,我试图用别名做一些查询,但没有显示我的结果。
表用户
user_id | name | surname
1 Luca Jhon
2 Paul Red
3 Jin Blue
4 Diana Lars
表友谊
id_friendship | id_user_sender | id_user_receive | confirm
1 1 2 2
2 2 3 2
3 1 3 2
4 1 5 2
如果我是名为Luca(id 1)的用户并使用Paul(id 2)搜索实现,则应该显示此项
name | surname | id_user |
Jin Blue 3
有什么想法吗?谢谢
答案 0 :(得分:1)
友谊可能是互惠的。你的友谊表只有单向关系。
因此,我们的想法是在两个方向创造所有可能的友谊。然后按照第一个进行聚合,并为您感兴趣的每个用户测试第二个:
select u.*
from (select id_user_sender as id1, id_user_receive as id2
from frienship f
union all
select id_user_receive as id1, id_user_send as id2
from frienship f
) f join
users u
on f.id1 = u.user_id
group by id1
having max(id2 = 1) > 0 and
max(id2 = 2) > 0;