Как сравнить COUNT на равенство с 0 в запросе?

Вот иметься вот такой запрос:

SELECT dialogs.id_dialog AS id, clients.name AS name, COUNT( messages.status) AS qt 
FROM dialogs INNER JOIN clients ON dialogs.id_client = clients.id_client INNER JOIN 
messages ON dialogs.id_dialog = messages.id_dialog WHERE dialogs.id_manager = '1' AND 
messages.status = '0' GROUP BY dialogs.id_dialog

Надо в него вставить вот это:

IF (COUNT( messages.status) == '0') COUNT( messages.status) = 0

То есть, если значение COUNT = 0 все равно выводить запись, но в столбец qt выводить 0.
  • Вопрос задан
  • 519 просмотров
Решения вопроса 1
RazerVG
@RazerVG Автор вопроса
FrontEnd
Вот решение моей проблемы
SELECT dialogs.id_dialog AS id, clients.name AS name, SUM(case when messages.status = 0 then 1 else 0 end) AS qt 
FROM dialogs INNER JOIN clients ON dialogs.id_client = clients.id_client INNER JOIN 
messages ON dialogs.id_dialog = messages.id_dialog WHERE dialogs.id_manager = '1' GROUP BY dialogs.id_dialog


Теперь выдает количество сообщений со статусом 0.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
He11ion
@He11ion
PHP-monkey
HAVING

как пример tftf.ru/stati/mysql/having или в гугл/доки
Ответ написан
Комментировать
gogametreveli
@gogametreveli
SELECT dialogs.id_dialog AS id, clients.name AS name, SUM(IF(messages.status = '0',0,1)) AS qt 
FROM dialogs INNER JOIN clients ON dialogs.id_client = clients.id_client INNER JOIN 
messages ON dialogs.id_dialog = messages.id_dialog WHERE dialogs.id_manager = '1' AND 
messages.status = '0' GROUP BY dialogs.id_dialog

делается такое через SUM(IF()), но у вас в WHERE стоит ограничение messages.status = '0', поэтому этот запрос всегда вернет qt =0
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы