我有2个表,需要返回按类别分组的一些项目的计数。类别名称包含在另一个表中,因此它看起来像这样,而不是每个项目都有与之关联的状态
表1
Item1 | ID1 |StatusID1
Item2 | ID2 |StatusID2
Item3 | ID3 |StatusID2
Item4 | ID4 |
表2
StatusID1 | StatusA
StatusID2 | StatusB
我基本上需要看
StatusA | CountStatusA
StatusB | CountStatusB
我可以在有状态时显示它们但在没有分配状态时无法获取任何内容。
由于
答案 0 :(得分:0)
进行条件检查,如果status为null,则根据您的要求对其进行计数或显示。假设没有状态意味着空值。
你可以这样做(如果第一个表中的状态ID只是空格) select table2.status,count(table1.id)from table2,table1 where table1.statusid = table2.statusid group by table1.statusid 联盟 选择'无状态ID',从table1计算(table1.id)table1.statusid =''
OR
您可以这样做(如果第一个表中的状态ID为null) select table2.status,count(table1.id)from table2,table1 where table1.statusid = table2.statusid group by table1.statusid 联盟 选择'没有状态ID',来自table1的count(table1.id),其中table1.statusid为null
答案 1 :(得分:0)
您可以在分组之前coalesce
丢失的状态:
SELECT COALESCE (status, 'Status missing'), COUNT(*)
FROM table1
LEFT JOIN table2 ON table1.status_id = table2.status_id
GROUP BY COALESCE (status, 'Status missing')