我有两张桌子。问题和问题投票。问题表中有许多行,而投票表中只有一行。
我有这样的疑问:
select
problems.problem_id,
creator_member_id,
problem_title,
problem_description,
sum( vote ) as totalVotes,
problem_date
from problems
left join problem_votes on
problems.problem_id = problem_votes.problem_id
我原以为会有一个问题列表返回,但由于某种原因,我只得到一个项目。
如果我去掉sum函数,它将返回20行。有没有办法让查询得到每个问题的投票总数?
最佳答案
您需要一个GROUP BY
否则它将聚合整个表,而不是为每个问题返回一行:
SELECT
problems.problem_id,
creator_member_id,
problem_title,
problem_description,
sum(vote) as totalVotes,
problem_date
FROM problems
LEFT JOIN problem_votes
ON problems.problem_id = problem_votes.problem_id
GROUP BY problems.problem_id
此查询使用MySQL扩展:
GROUP BY
and HAVING
with Hidden Columns