查询返回一行,包含完整的总和而不是每行的总和

Gee*_*Out 5 mysql sql

我在problem_categories表中有9个项目,其category_id = 1

当我这样做时:

select problems.problem_id , problem_title , sum( vote ) as totalVotes 
from problems 
left join problem_votes on problems.problem_id = problem_votes.problem_id 
left join problem_categories on problems.problem_id = problem_categories.problem_id  
where problem_categories.category_id = 1; 
Run Code Online (Sandbox Code Playgroud)

我获得了1行,其中9个项目的所有选票都是完整的.但我真正想要的是9行,每行有一票.通过查看我的查询有什么问题吗?

我的桌子是

problem - lists problem information
problem_votes - has a record per vote for each problem
problem_categories - table keeping a problem_id and a category_id so that a problem can be in a certain category
Run Code Online (Sandbox Code Playgroud)

谢谢,亚历克斯

ean*_*533 13

您需要告诉MySQL您要分组的内容.现在它认为你想把一切分成一行.如果您希望按分组进行problem_title,请在以下后面添加以下内容WHERE:

GROUP BY problem_title
Run Code Online (Sandbox Code Playgroud)

这将导致您为每个唯一行获取不同的行problem_title,并且sum仅计算与该标题匹配的记录.

编辑:

所以整个查询看起来像这样:

select problems.problem_id , problem_title , sum( vote ) as totalVotes 
from problems 
left join problem_votes on problems.problem_id = problem_votes.problem_id 
left join problem_categories on problems.problem_id = problem_categories.problem_id  
where problem_categories.category_id = 1
group by problem_title; 
Run Code Online (Sandbox Code Playgroud)