2012-07-10 34 views
2

SQL和我有两个表采用一对多的关系

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

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

我的查询......但和操作不会受到影响。只有一行会被修复。

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

回答

3
SELECT comment.*, SUM(rates.score) FROM comment LEFT JOIN rate ON (rate.comment_id = comment.id) 
GROUP BY comment.id 
2

尝试by子句添加组:

SELECT comment.*, SUM(rates.score) FROM comment LEFT JOIN rate ON rate.comment_id = comment.id GROUP BY rates.comment_id; 
3

您当前的查询会简单地总结所有意见的评级。你必须做什么是合并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