Задать вопрос
flapflapjack
@flapflapjack
на треть я прав

Как выводить разность двух SUM даже, если один из операндов IS NULL?

Привет. У меня есть две таблицы: одна из них -добавление CUTS к девайсу, вторая - трата этих самых CUTS.

Если сделать запрос:
SELECT SUM(cuts_add.count)-SUM(cuts.count) AS remains FROM cuts_add LEFT JOIN cuts ON cuts.device_id=cuts_add.device_id WHERE cuts_add.device_id=:id GROUP BY cuts_add.device_id

То остатки выводятся верно, но при условии, что в вычитающейся и в вычитаемой таблице есть хотя бы одна запись с числовым полем Count, относящаяся к запросу, будь то даже нулевое значение.

То есть если SUM(cuts_add.count) или SUM(cuts.count) - не число (хотя бы одно из двух), то SQL в результате выдает NULL.

Хотел пофиксить в PHP
return is_numeric($ret[0]['remains']) ? $ret[0]['remains'] : 0;


Но тут косяк - если в таблице add_cuts добавлено 100500 cuts для определенного device_id, а в таблице cuts нет ни одной записи, то результат - тоже NULL, а должен быть 100500.

Можно как-то исправить?
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
18 янв. 2025, в 10:04
50000 руб./за проект
18 янв. 2025, в 09:18
5500 руб./за проект
18 янв. 2025, в 07:20
50000 руб./за проект