Как заставить запрос MySQL возвращать 0, когда результат запроса ничто? - PullRequest
1 голос
/ 22 мая 2019

У меня следующий запрос:

SELECT 
SUM(quantity) AS qt
FROM 
stockMove
WHERE
date_mov >= '2019-04-01'
AND
date_mov <= '2019-04-30'
AND
ProductCode = '000807'
GROUP BY 
ProductCode 

Если в этом диапазоне дат нет движения этого продукта, запрос ничего не возвращает, но мне нужно, чтобы он возвращал 0.

Я уже пытаюсь:

ВЫБРАТЬ СУММУ (количество) КАК QT, КОАЛЕЦ (количество, 0)

и

ВЫБРАТЬ СУММУ (количество) AS qt, IFNULL (количество, 0)

но запрос по-прежнему возвращает 0 строк.

Есть ли способ решить мою проблему?

Спасибо, ребята.

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

В вашем случае просто удалите GROUP BY и используйте COALESCE():

SELECT COALESCE(SUM(quantity), 0) AS qt
FROM stockMove
WHERE date_mov >= '2019-04-01' AND date_mov <= '2019-04-30' AND
      ProductCode = '000807';

Запрос агрегации без GROUP BY всегда возвращает одну строку, даже если ни одна строка не совпадает. Возвращаемое значение - NULL - вот где приходит COALESCE().

С GROUP BY запрос вообще не возвращает строк. Не могу ничего преобразовать в 0.

0 голосов
/ 22 мая 2019

Используйте как показано ниже -

SELECT COALESCE(SUM(quantity),0) AS qt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...