2013-10-14 32 views
0

我無法想象在這裏使用的MySQL查詢。下面是表:加入三個表的帖子,用戶信息和評分

users 
----- 
userid name 

posts 
----- 
postid user_id message 

ratings 
----- 
rateid user_id post_id score 

我希望能夠選擇TOP 10個職位基於用戶提交的所有得分總數最高收視率。

我使用的查詢是這樣的,但不無評級清單項目:

SELECT *,IFNULL(SUM(score),0) score 
FROM posts 
LEFT JOIN ratings ON postid=post_id 
LEFT JOIN users ON userid=posts.user_id 
ORDER BY score DESC 
LIMIT 10 

但我還是希望能夠列出那些帖子沒有評級。你能幫我寫SQL查詢嗎?謝謝!

+0

考慮提供適當的DDLs和/或sqlfiddle與期望的結果集。 – Strawberry

+0

您是否嘗試過查詢?結果是什麼? –

+0

我只收到評分結果。那些沒有相應評分的帖子中的項目沒有列出。 –

回答

1
SELECT post_id,coalesce(score, 0) score 
FROM posts 
LEFT JOIN ratings ON postid=post_id 
LEFT JOIN users ON userid=posts.user_id 
GROUP BY post_id 
ORDER BY coalesce(score, 0) DESC 
LIMIT 10 
+0

謝謝!有效! :) –