私のウェブサイトの記事セクションに関連する3つのテーブルがあります。著者の記事を読んだ回数に基づいて、トップの著者を表示する必要があります。この情報を保存するために、基本的な3つのテーブルを使用します。
Article
記事に関連するすべての詳細があり、著者情報がに保存されAuthors
、ユーザーが特定の記事を表示すると、に新しいレコードを更新または挿入しPopularity
ます。
以下はサンプルデータです。
Articles
ArticleID Title Desc AuthorID
--------- ---------------- ---- --------
1 Article One .... 100
2 Article Two .... 200
3 Article Three .... 100
4 Article Four .... 300
5 Article Five .... 100
6 Article Six .... 300
7 Article Seven .... 500
8 Article Eight .... 100
9 Article Nine .... 600
Authors
AuthorID AuthorName
-------- ------------
100 Author One
200 Author Two
300 Author Three
400 Author Four
500 Author Five
600 Author Six
Popularity
ID ArticleID Hits
-- --------- ----
1 1 20
2 2 50
3 5 100
4 3 11
5 4 21
次のクエリを使用して、トップ10の著者を取得しようとしています。
SELECT TOP 10 AuthorID
,au.AuthorName
,ArticleHits
,SUM(ArticleHits)
FROM Authors au
JOIN Articles ar
ON au.AuthorID = ar.ArticleAuthorID
JOIN Popularity ap
ON ap.ArticleID = ar.ArticleID
GROUP BY AuthorID,1,1,1
ただし、これにより次のエラーが発生します。
メッセージ164、レベル15、状態1、行12
各GROUP BY式には、外部参照ではない列が少なくとも1つ含まれている必要があります。