Mysql Query没有汇总多条记录,只是采取了第一条记录

时间:2012-07-18 20:43:09

标签: php mysql

我们有一张表(调查),其中有不同的调查问题。每个survey_id仅在此表中出现一次。

我们有一张投票表(vote_survey_table),用于记录每个调查问题的用户投票。该表包含survey_id,vote_yes,vote_no,user_id等字段。此表为每个survey_id都有多个条目。

我正在尝试查询投票表,以便为给定的调查问题添加所有投票,但我想出的查询只会在投票表中添加行的第一个实例。

SELECT survey.survey_id, vote_survey_table.vote_yes AS cnt,
survey.survey_name, survey.survey_details 
FROM survey 
LEFT JOIN vote_survey_table AS votedb ON vote_survey_table.vote_survey_id = survey.survey_id
GROUP BY survey.survey_id
ORDER BY cnt DESC, survey.survey_id LIMIT 0,5

我在此查询中缺少什么,应该告诉查询在投票表中添加survey_id的所有实例并总结结果?我尝试将LEFT JOIN更改为INNER JOIN,但这也没有做到。

一如既往地感谢您。

2 个答案:

答案 0 :(得分:1)

你需要总结选票。

SELECT survey.survey_id, SUM(vote_survey_table.vote_yes) AS cnt,
       survey.survey_name, survey.survey_details 
FROM survey LEFT JOIN vote_survey_table AS votedb 
              ON vote_survey_table.vote_survey_id = survey.survey_id
GROUP BY survey.survey_id, survey.survey_name, survey.survey_details 
ORDER BY cnt DESC, survey.survey_id LIMIT 0,5

如果vote_yes是布尔字段,则使用COUNT代替SUM

答案 1 :(得分:1)

你根本就没有总结。您应该使用像

这样的聚合函数
SELECT SUM(vote_survey_table.vote_yes) AS cnt

请参阅http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html