问题陈述:我需要我的结果集来包含由于它们为NULL而不会自然返回的记录。当没有结果时添加行值 - MySQL
我打算在此放一些简化的代码,因为我的代码似乎太长了。
表Scores
有Company_type
,Company
,Score
,在下面的Project_ID
Select Score, Count(Project_ID)
FROM Scores
WHERE company_type= :company_type
GROUP BY Score
结果:
Score Projects
5 95
4 94
3 215
2 51
1 155
一切工作正常,直到我申请COMPANY_TYPE不包括在结果的条件5个评分类别之一。发生这种情况时,我的结果集中不再有5行。
它显示是这样的:
Score Projects
5 5
3 6
1 3
我想它显示是这样的:
Score Projects
5 5
4 0
3 6
2 0
1 3
我需要的结果总是显示5行。 (Scores = 1-5)
我试过Spencer7593下面的方法之一。我的一个简化查询现在看起来是这样的:
SELECT i.score AS Score
,IFNULL(COUNT(*),0)作为Projects
FROM(SELECT 5 AS得分 UNION ALL SELECT UNION ALL SELECT UNION ALL SELECT 2 UNION ALL SELECT 1)1 LEFT JOIN比分ON Scores.score = i.score GROUP BY分数 ORDER BY i.score DESC
并给出下列结果,其中是准确的,除了项目中带有1的行应该实际为0,因为它们是由“i”派生的。有没有项目得分为5或2
Score Projects
5 1
4 5
3 6
2 1
1 3
解决了!我只需要调整我的计数,以专门查看项目数量 - 计数(项目)而不是计数(*)。这返回了预期的结果。
什么是要应用到数据的条件? – Lauthai
请显示您的查询和您的表格结构。你很可能需要使用“外部连接”。 – sgeddes
添加您的查询.. – Prashanth