朋友在共同查询mysql

时间:2013-08-26 01:11:49

标签: mysql sql

我有这两个表:用户和友谊。我想找到两个用户之间的共同朋友,我试图用别名做一些查询,但没有显示我的结果。

表用户

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

有什么想法吗?谢谢

1 个答案:

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