我在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)