如何获得共同朋友的名单

时间:2011-02-06 02:36:55

标签: php sql mysql

你好IM试图找出我如何能够得到共同的朋友

我目前在思考这个问题时遇到了问题。

我有一个名为“users”的表,这就是它的外观

id | name
-----------
1   Kenny
2   Jack
3   Jimmy
4   Chris
5   Meg
6   Jake
7   Micheal
8   Dude

我有一张叫做“友谊”的桌子 这就是它的外观

user_a | user_b 
----------------
4         1        
7         5
8         1
2         4
2         1
5         2
1         6
1         7

user_a向user_b发送成为朋友的请求... BAM有朋友。 现在,如果我是用户2,并且我转到用户的朋友列表,我想看看我们有什么共同的朋友。这样做的正确sql是什么?

1 个答案:

答案 0 :(得分:2)

假设用户1无法与User 7成为朋友两次(意味着不能有user_a = 1, user_b=7行和另一行user_a = 7, user_b = 1)。

SELECT IF(user_a = 1 OR user_a = 2, user_b, user_a) friend
FROM friendship
WHERE (user_a = 1 OR user_a = 2) OR (user_b = 1 OR user_b = 2)
GROUP BY 1
HAVING COUNT(*) > 1