2011-07-18 28 views
0

我想知道在這樣的數據庫設置中,如何計算每個用戶的所有活動連接的最佳方式是什麼?查詢中只應使用前兩個組。結果集是我希望查詢的輸出看起來像。計數活動連接


有一點要記住的是,這是可能的用戶記錄可能已被刪除,而不是體現在連接表中。結果集應只計算與仍在用戶表中的其他帳戶的連接。我還想按伯爵排序結果。

回答

1
SELECT Users.UserId,count(*) Count 
FROM ConnectionsTable 
JOIN Users ON (Users.UserId = Requestor OR Users.UserId = Requestee) 
GROUP BY Users.UserId 
ORDER BY count(*) DESC 
+0

用戶應該被計數它們是否請求者或受邀人 –

+0

加入或在加入。應該這樣做 – plague

+0

對不起,ResultSet是我希望查詢的輸出看起來像。這不是第三張桌子。查詢中只應使用前兩個表。 –

0
SELECT source.UserId, COUNT(*) as [Count] 
FROM 
(
    (
    SELECT Requestor as UserID 
    FROM Connections 
) 
    UNION ALL 
    (
    SELECT Requestee as UserID 
    FROM Connections 
) 
) source 
WHERE Exists (SELECT top 1 1 FROM Users us WHERE us.UserId = source.UserId) 
GROUP BY source.UserId