我有一个查询将几个表连接在一起并带回一组结果。但是我发现需要调整它以便以不同的方式撤回结果。
基本上人们已经完成了一项调查,数据存储在数据库中。
我需要生成一份报告,如下图所示:(这只是为了演示目的而提出的几个问题)
所以我遇到的问题是图像中的第一个问题,每个人都选择了“是”,这意味着我只撤回了答案。相反,我需要显示可能的答案“否”,以便我可以在右边放0(对于选择此选项的人数)。
好的,我现在得到的查询如下:
SELECT
`surveyEntries`.`ID` AS EntryID,
`surveyEntries`.`created` AS EntryDate,
`hw_services`.`name` AS Provider,
`surveyQuestions`.`ID` AS QuestionID,
`surveyQuestions`.`label` AS Question,
`survey_meta`.`answer` AS Answer,
count(*) as Total,
`surveyQuestions`.`parentID` AS ParentQuestion
FROM `survey`
JOIN `surveyQuestions`
ON `survey`.`ID` = `surveyQuestions`.`surveyID`
JOIN `surveyEntries`
ON `survey`.`ID` = `surveyEntries`.`surveyID`
JOIN `survey_meta`
ON (`surveyEntries`.`ID` = `survey_meta`.`entryID` AND `surveyQuestions`.`ID` = `survey_meta`.`questionID`)
JOIN `hw_services`
ON `surveyEntries`.`hw_serviceID` = `hw_services`.`ID`
WHERE `hw_services`.`healthwatchID` = '1'
AND `survey`.`ID` = '1'
AND `surveyQuestions`.`type` IN ('radio', 'dropdown')
AND `hw_services`.`ID` = 1697
GROUP BY `surveyQuestions`.`ID`, `survey_meta`.`answer`
从这个查询得到的结果如下所示:(仅显示4行用于演示目的)
好的,你可以看到我的问题。问题是“你住在伯明翰市吗?25/25的人选择了。所以我没有选择'不'的选择。
好的,所有包含所有选项的表名为questionChoices,下面的图片如下所示:
我已经尝试但是没有运气得到我想要的结果。我真的不想通过PHP来做这件事,因为它会使代码变得非常混乱。
有谁知道我怎么能做到这一点?为了帮助你们,我将提供一个图像列表,显示与此相关的每个数据库表中的一个示例。
调查:
surveyEntries:
surveyQuestions:
survey_meta:(加入问题和答案)
我在这个问题的前面举了一个 questionChoices 的例子