SQL查询-选择count(*)时返回0

时间:2018-11-17 05:49:33

标签: php mysql sql database phpmyadmin

首先,我已经阅读了所有具有相同标题的帖子。但是没有解决方案可以解决我的问题。

我希望我的查询结果是这样的

kategori | hitung

 Good    |   2

 Nice    |   0

great    |   1 

使用此查询:

SELECT kategori, COALESCE(COUNT(kategori), 0) AS hitung FROM tb_cust WHERE id_sales=9 GROUP BY kategori DESC

但是结果仅返回2个数据:

kategori | hitung

 Good    |   2

great    |   1 

我的查询是否错误?

编辑:

这是我的表及其中的数据

表名称:tb_cust

id_cust  |  name_cust  |  kategori  |  id_sales

   1     |  Name 1     |  Good      |     9

   2     |  Name 2     |  Good      |     9

   3     |  Name 3     |  Great     |     9

2 个答案:

答案 0 :(得分:1)

根据您的条件(WHERE id_sales = 9),tb_cust中可用的kategori值是“好”,“好”。

相反,您可以拥有的是

第1步:首先在cte-> kategori_val中添加一个块,以显示kategori的所有可能值

第2步。与tb_cust中的数据左连接并获取记录数

-我想“ with”在mysql数据库中不起作用

   select a.kategori,count(b.kategori) as hitung
     from (select distinct kategori /*I am assuming we have Good,Great and Nice available in tb_cust*/
             from tb_cust) a
left join tb_cust b
       on a.kategori=b.kategori
      and b.id_sales=9 
group by a.kategori 
order by 2 DESC

答案 1 :(得分:0)

您可以通过条件聚合来做到这一点:

SELECT kategori, SUM(id_sales = 9) as hitung
FROM tb_cust
GROUP BY kategori DESC;

这假定类别在表中有 some 条记录。

如果没有,则可以将查找表用于以下类别:

SELECT k.kategori, SUM(c.id_sales = 9) as hitung
FROM tb_kategori k LEFT JOIN
     tb_cust c
     ON k.kategori = c.kategori
GROUP BY k.kategori DESC;