MYSQL连接以产生正确的结果

MYSQL连接以产生正确的结果,mysql,sql,database,Mysql,Sql,Database,我有一个查询,它将几个表连接在一起,并返回一组结果。然而,我发现这需要调整,以不同的方式收回结果 基本上,人们已经完成了一项调查,将数据存储到数据库中 有了这些数据,我需要生成一份如下图所示的报告:(这只是几个可能的问题,用于演示) 所以我的问题是,对于图片中的第一个问题,每个人都选择了“是”,这意味着我只是收回了那个答案。相反,我需要显示可能的答案“否”,以便我可以将0放在右侧(对于选择此选项的人数) 好的,我现在得到的查询如下: SELECT

我有一个查询,它将几个表连接在一起,并返回一组结果。然而,我发现这需要调整,以不同的方式收回结果

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

有了这些数据,我需要生成一份如下图所示的报告:(这只是几个可能的问题,用于演示)

所以我的问题是,对于图片中的第一个问题,每个人都选择了“是”,这意味着我只是收回了那个答案。相反,我需要显示可能的答案“否”,以便我可以将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来实现这一点,因为它会产生非常混乱的代码

有人知道我是如何做到这一点的吗?为了帮助大家,我将提供一个图像列表,显示与此相关的每个数据库表中的一个示例

调查:

调查入口:

调查问题:

调查\u meta:(将问题与答案结合起来)


我在前面的问题中给出了一个问题选择的例子

对于所有的连接,你可能应该做一个
左连接
,而不是
连接
(这是一个
内部连接
),你的意思是吗?可能,是的,至少(从上到下)直到连接到
hw\u services
。记住,左连接后跟内部连接本质上也是一个内部连接。好的,我已经测试并产生了相同的结果。你知道我如何解决我的问题吗?如果左连接不能解决问题,不,不是我想的。我不熟悉mysql,我不知道它如何处理null、 您可以尝试按所有非聚合列进行分组(其愚蠢的mysql允许这样做),并捕获空值(ISNULL或mysql的等效值)。