我有三個表格與我的網站的文章部分相關。我需要根據數字顯示頂級作者,如果時代作者的文章在哪裏閱讀。我使用基本的三張表來存儲這個通知。使用連接的三個表格中的不同行
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
但這生成以下錯誤:目前與聚合函數
Msg 164, Level 15, State 1, Line 12
Each GROUP BY expression must contain at least one column that is not an outer reference.
我會基於性能標記你的答案是正確的,我不知道爲什麼即使當我寫出幾乎類似的查詢出來的挫折我爲什麼我得到錯誤,我嘗試了很多事情,結束了堆棧,反正它的作品和感謝您的答覆。我不得不使用SUM(點擊)'來計算哪些作者的文章是最讀的..我無法得到你的答案的最後部分關於準確的結果我的數據是類似於我所提到的作爲問題 – Learning