Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用sum、count、group by和multiple left join执行查询_Mysql - Fatal编程技术网

Mysql 使用sum、count、group by和multiple left join执行查询

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

我有三张表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     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链接你的意思是这样的吗?--如果没有,请提供样品预期输出。非常感谢!事实上,我在分组时犯了一个错误。