我有一個論壇,我想找到最受歡迎的用戶。最受用戶喜愛的帖子和評論,也是由最多的帖子和評論來定義的。 最喜歡的用戶喜歡(order 1),大多數帖子(order 2)and 最多評論(order 3)是最流行的。同樣的邏輯適用於下一個(第二)最受歡迎的用戶。選擇喜歡,帖子和評論最熱門的用戶
所以我有3個表:
職位表
id user_id likes
1 1 0
2 1 0
3 1 0
4 1 0
5 1 0
6 1 1
7 1 0
8 2 0
9 2 2
10 2 0
11 2 0
12 3 0
13 3 0
14 4 0
15 4 10
意見表
id user_id likes
1 1 0
2 1 1
3 1 1
4 1 0
5 2 0
6 2 2
7 2 1
8 4 1
9 4 0
用戶表
id name
1 John
2 Adam
3 Maggie
4 Steve
喜歡欄包含其他用戶在各自帖子(行)上給出的喜歡。 我想:
SELECT DISTINCT c.id, c.name,
SUM(a.likes), SUM(b.likes), (SUM(a.likes) + SUM(b.likes)) as popular,
COUNT(a.id) as mostp, COUNT(b.id) as mostc
FROM posts as a, comments as b, users as c
WHERE a.user_id=b.user_id AND a.user_id=c.id AND b.user_id=c.id
GROUP BY a.user_id, b.user_id ORDER BY popular DESC, mostp DESC, mostc DESC
顯然,這是不行的,因爲如果你測試查詢並讓更多喜歡(和)低於預期。
這裏是實況查詢 http://sqlfiddle.com/#!2/08900/3
把你的數據(或其子集)在[小提琴](http://sqlfiddle.com),所以我們這些沒有獲得MySQL能夠幫助你。 – hd1 2013-05-11 18:33:37
你可以發佈你想要的輸出嗎 – 2013-05-11 18:43:01
所需的輸出結果是從SUM中推算出的結果與表中的結果完全一致。錯誤的產出(如現在)以笛卡爾產品結束。 – Ricardus 2013-05-11 18:54:08