我有兩個帶有用戶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