Mysql 使用sum、count、group by和multiple left join执行查询
我有三张表1.用户,2.项目问题,3.投票Mysql 使用sum、count、group by和multiple left join执行查询,mysql,Mysql,我有三张表1.用户,2.项目问题,3.投票 id project_id user_id question 1 593 308 Hello Question? 2 593 308 This is Another Question? 3 593 308 sdssds 4 593 308 asdsd 5 593 308 dsfdsfsdfsfsdfs 6 593
id project_id user_id question
1 593 308 Hello Question?
2 593 308 This is Another Question?
3 593 308 sdssds
4 593 308 asdsd
5 593 308 dsfdsfsdfsfsdfs
6 593 308 nro
7 593 308 dsfsdfsdfsdf
8 593 308 zxzx
9 593 308 zxzxasasasasasasasas
10 593 308 zxzxasasasasasasasasfdsfdsfdsfsdfdsfsdf
11 593 308 fdfdsf
12 593 308 saddsadsad
13 593 308 ghvhgvhg
这是我的问题。
SELECT `project_questions`.*, count(votings.vote) as vote,
sum(case when votings.yes=1 then 1 else 0 end) as yes,
sum(case when votings.no=1 then 1 else 0 end) as no,
`user`.`image`, `user`.`user_name`, `user`.`last_name` FROM
(`project_questions`) LEFT JOIN `votings` ON
`votings`.`question_id`=`project_questions`.`id` LEFT JOIN `user` ON
`user`.`user_id`=`project_questions`.`user_id` WHERE
`project_questions`.`project_id` = '593' GROUP BY `votings`.`question_id`
用户表有三个字段,比如user\u id、first\u name、username。
预期结果
但有时一些问题没有显示。在评论中确认的答案是在project\u questions.id上分组,而不是在votings.question\u id上分组
SELECT
project_questions.*,
count(votings.vote) as vote,
sum(case when votings.yes=1 then 1 else 0 end) as yes,
sum(case when votings.no=1 then 1 else 0 end) as no,
user.first_name,
user.last_name
FROM
project_questions
LEFT JOIN votings ON votings.question_id=project_questions.id
LEFT JOIN user ON user.user_id=project_questions.user_id
WHERE project_questions.project_id = '593'
GROUP BY project_questions.id
查询在我看来很好,您可能需要包含一份数据副本(来自mysqldump)。否则建议很愚蠢,但请确保它不在结果集的下一页上。请检查项目问题表(第一张图片),有一个id为13的问题没有显示(在最后一张图片中)?最后一个屏幕截图是MySQL结果。我想用投票来显示所有的问题。请检查mysql fiddle链接你的意思是这样的吗?--如果没有,请提供样品预期输出。非常感谢!事实上,我在分组时犯了一个错误。