我有一个查询将几个表连接在一起并带回一组结果。但是我发现需要调整它以便以不同的方式撤回结果。
基本上人们有一个调查数据存储在数据库中。
根据数据,我需要制作如下图所示的报告:(这只是一些可能的示范问题)
所以我遇到的问题是图片中的第一个问题,每个人都选择了“是”'这意味着我只撤回了答案。相反,我需要显示可能的答案" no"所以我可以在右边放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人选择了是。所以我没有选择' No'。
好的,所有包含所有选项的表名为questionChoices,下面的图片如下所示:
我已经尝试但是没有运气得到我想要的结果。我真的不想通过PHP来做这件事,因为它会使代码变得非常混乱。
有谁知道我怎么能做到这一点?为了帮助你们,我将提供一个图像列表,显示与此相关的每个数据库表中的一个示例。
调查:
surveyEntries:
surveyQuestions:
survey_meta:(加入问题和答案)
我在此问题的前面提供了 questionChoices 的示例