0

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

表用户

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

任何的想法?谢谢

4

1 回答 1

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;
于 2013-08-26T01:18:33.750 回答