2011-07-18 12 views
0

このようなDB設定で、1人のユーザーあたりのすべてのアクティブな接続数を取得する最も良い方法は何かを知りたかったのです。クエリで最初の2つのグループのみを使用する必要があります。結果セットは、私が照会の出力を見せたいものです。心に留めておくべきアクティブな接続を数える


ことの一つは、ユーザーのレコードが削除され、接続テーブルに反映されていないされている可能性があることが可能であるということです。結果セットでは、ユーザーテーブルにまだ存在する他のアカウントとの接続数のみをカウントする必要があります。私はCountによって結果を並べ替えることもしたいと思います。

答えて

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は、私は、クエリの出力が欲しいです。 3番目のテーブルではありません。クエリで最初の2つのテーブルのみを使用する必要があります。 –

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 
関連する問題