如何统计特定调查问卷的作答结果并关联查询选项对应票数?
正确SQL实现
你需要的绑定选项文本与对应作答计数的单条SQL可以用LEFT JOIN实现,该写法会自动保留所有当前问题的选项,没人选择的选项计数会返回0,不会出现统计遗漏:
SELECT c.text AS choice_text, COUNT(a.choice_id) AS answer_count FROM choice c LEFT JOIN answer a ON c.choice_id = a.choice_id AND c.question_id = a.question_id WHERE c.question_id = 12 GROUP BY c.choice_id, c.text
你后续替换12为Flask session中存储的question_id动态值即可,注意要使用参数化查询传参,不要直接拼接SQL字符串,避免SQL注入风险。
之前写法的常见问题
你之前的失败尝试大多存在以下问题:
- 未关联
choice表和answer表的choice_id字段,导致表交叉关联,计数结果完全错误 - 使用内连接关联
answer表,会直接过滤掉没有人选择的选项,统计结果不全 - SELECT子句中的非聚合字段和GROUP BY子句不匹配,在严格模式的数据库中会直接抛出语法错误
内容的提问来源于stack exchange,提问作者Garrett
相关产品推荐
相关产品推荐

