查询num次用户参加同一方

时间:2016-10-12 01:54:52

标签: mysql

我有下面的模式

Friends Table
----------
user1_id
user2_id

Party
-----
user_id
party_id

我试图找到参与者数量为user1和user2的人数。例如,

Friends Table 
----------
user1 | user 2
1       2     ( user 1 is connected to user 2)
1       4     ( user 1 is connected to user 4)
2       3
2       4

Party
--------
userid | partyid
1        1       (user 1 joined party 1)
2        1       ( user 2 also joined party 1)
1        2
2        2
1        3
2        3
4        3

返回结果,用户1和用户2都参加了3个相同的聚会,用户2和4加入了1方,而用户1和4也加入了1方

我想抓住所有参加过的用户1,然后抓住所有参与的用户2并在party_id上使用UNION,但有没有办法在所有用户的一次查询中做到这一点?

1 个答案:

答案 0 :(得分:0)

您能澄清用户连接的含义吗?

忽略用户连接,您可以尝试以下

select P1.userId, P2.userId, count(*)
from Party as P1, Party as P2
where P1.partyId = P2.partyId and P1.userId < P2.userId
group by P1.userId, P2.userId

这将为您提供每个用户对一起参加的聚会数量的计数。