3

我有两张桌子

comments
------------------
id       text

rates
---------------------
id    comment_id    score

我的查询是……但求和运算不受影响。只有一排将被退回。

SELECT *, SUM(rates.score) FROM comment LEFT JOIN rate ON (rate.comment_id = comment.id)
4

3 回答 3

4
SELECT comment.*, SUM(rates.score) FROM comment LEFT JOIN rate ON (rate.comment_id = comment.id)
GROUP BY comment.id
于 2012-07-10T21:36:10.187 回答
4

您当前的查询将简单地将所有评论的评级相加。您必须做的是合并GROUP BY,它将按每个评论对聚合进行分组,因此结果SUM()只是每个特定评论的评分总和:

SELECT a.*, SUM(b.score) AS ratingsum
FROM comment a
LEFT JOIN rate b ON a.id = b.comment_id
GROUP BY a.id
于 2012-07-10T22:19:25.037 回答
2

尝试添加一个 group by 子句:

 SELECT comment.*, SUM(rates.score) FROM comment LEFT JOIN rate ON rate.comment_id = comment.id GROUP BY rates.comment_id;
于 2012-07-10T21:36:56.573 回答