【发布时间】:2014-06-06 12:44:54
【问题描述】:
背景资料
我的表结构如下:
Participants - id, email, organisation_type_id, job_role_id
Answers - id, participant_id, question_id, answer
Questions - id, question, question_category
还有另外两个表,组织类型和工作角色,它们只有一个 id 和一个名称,在上面的表中引用。
这些表格包含有人填写问卷时的数据(每个问题都有一个是或否的答案)。每个问题也属于两个类别之一(由 question_category 字段表示)。
当有人完成问卷时,它会在Participants 表中创建一条记录,并为每个问题在answers 表中创建一条记录。
问题
我想根据特定的组织类型(保存在participants 表中)计算每个问题的肯定答案和否定答案。
例如,如果我想知道属于组织类型 x 的有多少人投了赞成票,有多少人投了反对票,我想要这样的查询:
Count all answers to each question, where the participant has a organisation_type_id of x, group by answer
为了使它更加混乱,我还希望包含该行,即使该特定问题还没有答案。例如,我可能有问题 id x 的答案,但没有来自一个属于 organization_type_id y 的参与者的答案。我希望问题作为一行返回,但在“答案计数”列中为 0。
我的表结构是这里的问题还是只是一个非常令人困惑的查询?到目前为止,我正在使用以下查询,然后使用 PHP 循环遍历结果以检查它是否是我想要的组织或工作角色的一部分,但理想情况下我想在 MySQL 中完成所有操作。
SELECT * FROM `questions`
JOIN `answers` ON `answers`.`question_id` = `questions`.`id`
JOIN `participants` ON `participants`.`id` = `answers`.`participant_id`
提前致谢!
【问题讨论】: