私は持っている:
TABLE: USERS
UID | NAME
1 | Bob
2 | John
そして、私が持っています:
TABLE: HITS
HITID | UID
1 | 1
2 | 2
3 | 2
4 | 1
5 | 2
6 | 2
私が欲しい:
UID | HITS
1 | 2
2 | 4
簡単そうに見えますが、私はそれを行うことができないようですか?
これを試して:
SELECT UID, COUNT(UID) HITS FROM HITS
GROUP BY UID;
これはあなたを助けるかもしれません
DECLARE @USERS TABLE(UID INT, NAME VARCHAR(20))
INSERT INTO @USERS (UID,NAME) VALUES ('1','Bob'),('2','John')
DECLARE @HITS TABLE(HITID INT,UID INT)
INSERT INTO @HITS (HITID,UID) VALUES('1','1'),('2','2'),('3','2'),('4','1'),('5','2'),('6','2')
USERSテーブルとHITSテーブルの両方を使用する場合は、JOINを使用します
SELECT U.UID,COUNT(H.HITID) AS HITS FROM @USERS AS U INNER JOIN @HITS AS H ON U.UID = H.UID GROUP BY U.UID
または単純なクエリを使用するHITSテーブルのみを使用する場合
SELECT UID, COUNT(UID) HITS FROM @HITS GROUP BY UID
これで一時テーブルも作成しました。
SELECT b.UID, COUNT(b.UID) HITS FROM HITS a, USERS b
WHERE a.UID=b.UID
GROUP BY UID
これはうまくいくはずです
これはトリックを行うでしょう
SELECT H.UID, COUNT(*) AS 'HITS'
FROM HITS H
GROUP BY H.UID
ユーザーの名前が必要な場合は、それに参加する必要があります
SELECT a.Name, COUNT(*) totalCount
FROM users a
INNER JOIN HITS b
ON a.UID = b.UID
GROUP BY a.UID