我们有一张表(调查),其中有不同的调查问题。每个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,但这也没有做到。
一如既往地感谢您。
答案 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