我有两个带有用户ID的表,另一个表通过存储两个用户ID来表示两个用户之间的关系。如何计算两个用户之间的相互关系,并将相互关系定义为两个用户都与之有关系的用户数。SQL查询计数两个表之间的关系
例如,如果我有:
3 - 4
1 - 4
3 - 6
5 - 6
2 - 6
1 - 6
我希望我的查询返回(按顺序)
User1 User2 MutualCount
1 | 3 | 2
2 | 3 | 1
1 | 2 | 1
1 | 5 | 1
2 | 5 | 1
4 | 6 | 1
3 | 5 | 1
等等......
我想一些User1/User2的内部连接,但我无法弄清楚ON部分是如何工作的,也不知道如何存储和返回计数。
我很感激任何帮助!
我用这个来提取所有的任意两个用户的相互关系,但我一直没能想出一个办法做到这一点为所有用户
SELECT b.userid,
FROM user b, user c, relation f
WHERE c.user_id = <user id here>
AND (c.user_id = f.user1_id OR c.user_id = f.user2_id)
AND (b.user_id = f.user1_id OR b.user_id = f.user2_id)
INTERSECT
SELECT b.user_id
FROM user b, user c, relation f
WHERE c.user_id = <user id here>
AND (c.user_id = f.user1_id OR c.user_id = f.user2_id)
AND (b.user_id = f.user1_id OR b.user_id = f.user2_id);
那么到目前为止你已经尝试过了吗? – Japongskie
请定义**相互数**。 – DarkKnight
互相计数是与用户1和用户2之间的普通用户关系的数量。 – shawnt00