SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 25.09.2024 14:15:34

Irit
Участник
Зарегистрирован: 25.09.2024
Сообщений: 2

Преобразование возвращаемого пустого результата в 0

Добрый день.
Может кто-нибудь из знающих подсказать, есть ли какой-то оператор преобразования возвращаемого пустого (не NULL)  результата в 0 (и возможно ли это в принципе)?
Мне необходимо вычислить сумму столбца1, выбрав только те строки, которые удовлетворяют условию по столбцу2: sum(a) from table where b > 0, данных больше 0 нет, поэтому sql возвращает пустой результат.
Пример кода:
UPDATE table1
    JOIN (SELECT month, SUM(fee) AS fee1 FROM table2 WHERE table2.quantity = 0 GROUP BY month)
        AS fee1 ON fee1.month = table1.month
   
    JOIN (SELECT month, SUM(fee) AS fee2 FROM table2 WHERE table2.quantity > 0 GROUP BY month)
        AS fee2 ON fee2.month = table1.month
SET table1.fee = fee1 - fee2

Спасибо за ответы.

Неактивен

 

#2 25.09.2024 21:18:51

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3879

Re: Преобразование возвращаемого пустого результата в 0

UPDATE table1
     LEFT JOIN (SELECT month, SUM(fee) AS fee1 FROM table2 WHERE table2.quantity = 0 GROUP BY month)
         AS fee1 ON fee1.month = table1.month
     LEFT JOIN (SELECT month, SUM(fee) AS fee2 FROM table2 WHERE table2.quantity > 0 GROUP BY month)
         AS fee2 ON fee2.month = table1.month SET table1.fee = IFNULL(fee1,0) - IFNULL(fee2,0);
 

Вы можете заменить JOIN на LEFT JOIN. В этом случае отсутствие соответствующей строки в подключаемой справа таблице даст NULL. После этого с помощью IFNULL интерпретировать NULL как 0. Этот запрос обновит данные по всем месяцам в table1, независимо от того есть информация во второй таблице или нет.

Неактивен

 

#3 26.09.2024 09:25:20

Irit
Участник
Зарегистрирован: 25.09.2024
Сообщений: 2

Re: Преобразование возвращаемого пустого результата в 0

Добрый день.
Спасибо за совет.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson