我坚持这个SQL查询。我希望得到条件中描述的所有记录,即使表中不存在。我希望得到这样的结果。
+-----------------+
| total | rating |
+-----------------+
| 0 | 5 |
+-----------------+
| 0 | 25 |
+-----------------+
| 1 | 50 |
+-----------------+
| 3 | 75 |
+-----------------+
| 0 | 100 |
+-----------------+
我尝试使用COUNT
函数获取结果。评分始终为5,25,50,75,100
。
SELECT * FROM (SELECT COUNT(SurveyAnswer.rating) AS total,rating
FROM survey_answers AS SurveyAnswer INNER JOIN surveys AS Survey ON
SurveyAnswer.survey_id = Survey.id WHERE SurveyAnswer.survey_id = '33'
AND SurveyAnswer.rating IN (5,25,50,75,100)
AND SurveyAnswer.organisation_id = '26742'
GROUP BY SurveyAnswer.rating) tbl
显示当前结果
+-----------------+
| total | rating |
+-----------------+
| 1 | 50 |
+-----------------+
| 3 | 75 |
+-----------------+
答案 0 :(得分:1)
尝试左连接而不是内部
答案 1 :(得分:1)
你能试试吗
SELECT A.RATING, IFNULL(RC,0) AS TOTAL_RATING
FROM (SELECT 5 AS RATING UNION ALL SELECT 25 UNION ALL SELECT 50 UNION ALL SELECT 75 UNION ALL SELECT 100) AS A
LEFT JOIN (SELECT RATING, COUNT(*) AS RC
FROM survey_answers
INNER JOIN surveys AS Survey ON SurveyAnswer.survey_id = Survey.id
WHERE SurveyAnswer.survey_id = '33'
AND SurveyAnswer.organisation_id = '26742'
GROUP BY SurveyAnswer.rating) B ON A.RATING = B.RATING