MYSQL连接以产生正确的结果

时间:2015-07-09 10:58:14

标签: mysql sql database

我有一个查询将几个表连接在一起并带回一组结果。但是我发现需要调整它以便以不同的方式撤回结果。

基本上人们已经完成了一项调查,数据存储在数据库中。

我需要生成一份报告,如下图所示:(这只是为了演示目的而提出的几个问题)

enter image description here

所以我遇到的问题是图像中的第一个问题,每个人都选择了“是”,这意味着我只撤回了答案。相反,我需要显示可能的答案“否”,以便我可以在右边放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行用于演示目的)

enter image description here

好的,你可以看到我的问题。问题是“你住在伯明翰市吗?25/25的人选择了。所以我没有选择'不'的选择。

好的,所有包含所有选项的表名为questionChoices,下面的图片如下所示:

enter image description here

我已经尝试但是没有运气得到我想要的结果。我真的不想通过PHP来做这件事,因为它会使代码变得非常混乱。

有谁知道我怎么能做到这一点?为了帮助你们,我将提供一个图像列表,显示与此相关的每个数据库表中的一个示例。

调查:

enter image description here

surveyEntries:

enter image description here

surveyQuestions:

enter image description here

survey_meta:(加入问题和答案)

enter image description here

我在这个问题的前面举了一个 questionChoices 的例子

0 个答案:

没有答案