MySQL为帖子,用户信息和评级加入三个表

时间:2013-10-14 17:00:02

标签: mysql sql join

我无法想象在这里使用什么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查询吗?谢谢!

1 个答案:

答案 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