MYSQL/PHP 计算重复问题的答案
MYSQL/PHP count answers to reoccurring questions
我什至不知道该怎么做。但我会尽力解释。
我正在创建一个如下所示的报告:
但是还有很多问题。
所以有很多人回答了这个调查,所有记录都在数据库中,我需要使用它来制作这份报告。
我创建了查询,从连接多个表中提取所有相关数据,如下所示:
表格
-民意调查
-调查条目
-调查问题
-survey_meta
-hw_services
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,
`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'
好吧,不只是为了证明这是我正在撤回的数据的图片。调查中共有 30 个问题,但这里我只显示每个条目的 4 行。
所以它们是相同的问题等,但条目不同。
现在我该怎么做?
并在每个问题中得到回答是的数字和回答不是的数字,这样我就可以在 php?
中生成这个
如果您需要任何进一步的信息,请告诉我。
对于 GENDER 报告,您可以使用此 sql
SELECT
`survey_meta`.`answer` AS Gender,
COUNT(*) AS 'Total Answer'
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'
AND `surveyQuestions`.`ID` = 9
GROUP BY `survey_meta`.`answer`
对于AGE GROUP报告,与上面类似,只需更改surveyQuestions
.ID
。所以代码会像这样
SELECT
`survey_meta`.`answer` AS Gender,
COUNT(*) AS 'Total Answer'
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'
AND `surveyQuestions`.`ID` = 10
GROUP BY `survey_meta`.`answer`
由于您拥有所有数据,我们可以使用 group by
来查看每个问题的所有唯一答案的计数。为此,我们可以使用如下内容:
SELECT QuestionId, Question, Answer, count(*)
FROM (PUT YOUR SELECT HERE)
GROUP BY QuestionId, Answer
然后将为您提供每个问题(及其 ID),以及该问题的唯一答案和该唯一答案的计数。
或者在您提供的 select 中全部完成:
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`
我在开头的 select 和末尾的 GROUP BY surveyQuestions.ID, survey_meta.answer
中添加了 count(*)
我什至不知道该怎么做。但我会尽力解释。
我正在创建一个如下所示的报告:
但是还有很多问题。
所以有很多人回答了这个调查,所有记录都在数据库中,我需要使用它来制作这份报告。
我创建了查询,从连接多个表中提取所有相关数据,如下所示:
表格 -民意调查 -调查条目 -调查问题 -survey_meta -hw_services
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,
`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'
好吧,不只是为了证明这是我正在撤回的数据的图片。调查中共有 30 个问题,但这里我只显示每个条目的 4 行。
所以它们是相同的问题等,但条目不同。
现在我该怎么做?
并在每个问题中得到回答是的数字和回答不是的数字,这样我就可以在 php?
中生成这个如果您需要任何进一步的信息,请告诉我。
对于 GENDER 报告,您可以使用此 sql
SELECT
`survey_meta`.`answer` AS Gender,
COUNT(*) AS 'Total Answer'
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'
AND `surveyQuestions`.`ID` = 9
GROUP BY `survey_meta`.`answer`
对于AGE GROUP报告,与上面类似,只需更改surveyQuestions
.ID
。所以代码会像这样
SELECT
`survey_meta`.`answer` AS Gender,
COUNT(*) AS 'Total Answer'
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'
AND `surveyQuestions`.`ID` = 10
GROUP BY `survey_meta`.`answer`
由于您拥有所有数据,我们可以使用 group by
来查看每个问题的所有唯一答案的计数。为此,我们可以使用如下内容:
SELECT QuestionId, Question, Answer, count(*)
FROM (PUT YOUR SELECT HERE)
GROUP BY QuestionId, Answer
然后将为您提供每个问题(及其 ID),以及该问题的唯一答案和该唯一答案的计数。
或者在您提供的 select 中全部完成:
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`
我在开头的 select 和末尾的 GROUP BY surveyQuestions.ID, survey_meta.answer
中添加了 count(*)