SQL-запрос - возвращает 0 при выборе счетчика (*) - PullRequest
0 голосов
/ 17 ноября 2018

Во-первых, я уже прочитал все посты с таким же заголовком. Но никакое решение не решит мою проблему.

Я хочу, чтобы мой результат запроса был таким

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 

Неужели мой запрос неправильный?

Edit:

это моя таблица и данные внутри нее

имя таблицы: 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 голосов
/ 17 ноября 2018

Вы, вероятно, можете сделать это с помощью условного агрегирования:

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

Предполагается, что категории имеют некоторую запись в таблице.

Если нет, вы можете использовать справочную таблицу для категорий:

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;
0 голосов
/ 17 ноября 2018

Значения категорий, которые доступны в tb_cust в соответствии с вашим состоянием (ГДЕ id_sales = 9): «Хорошо», «Отлично».

Вместо этого вы могли бы

Шаг 1. Сначала в cte -> kategori_val есть блок для отображения всех возможных значений kategori

Шаг 2. Соединение влево с данными в tb_cust и получение количества записей

- Я думаю, "с" не работает в базе данных 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...