Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как вывести значение суммы, когда оно не равно 0

Кек Профи (672), на голосовании 1 год назад
В colichestvobook идет движение книг, запись с положительным пришли, с отрицательным ушли. Как сделать так, что когда SUM(colichestvobook.total) AS col равно нулю, эта запись не выводилась?

SELECT books.id , books.name , zhanr.name as `zhanr_name`, authors.FIO as `authors_name`,
izdatel.Name as `izdatel_name`, books.priceroz, books.datePublish, SUM( colichestvobook.total ) AS col
FROM kurs.books, kurs.zhanr, kurs.authors, kurs.izdatel, kurs.colichestvobook
where books.zhanrid = zhanr.id and books.authorid = authors.id and books.idIzdatel = izdatel.id
and colichestvobook.total != 0 and books.id = colichestvobook.id _book GROUP BY books.id ;
Голосование за лучший ответ
Вадим Саранчин Мастер (1150) 1 год назад
Чтобы исключить записи, для которых сумма colichestvobook.total равна нулю, необходимо добавить условие HAVING после оператора GROUP BY. Условие HAVING позволяет фильтровать группы на основе агрегированных значений.

Измененный запрос будет выглядеть следующим образом:

SELECT books.id, books.name, zhanr.name as `zhanr_name`, authors.FIO as `authors_name`,
izdatel.Name as `izdatel_name`, books.priceroz, books.datePublish, SUM(colichestvobook.total) AS col
FROM kurs.books, kurs.zhanr, kurs.authors, kurs.izdatel, kurs.colichestvobook
WHERE books.zhanrid = zhanr.id AND books.authorid = authors.id AND books.idIzdatel = izdatel.id
AND colichestvobook.total != 0 AND books.id = colichestvobook.id_book
GROUP BY books.id
HAVING col != 0;

Здесь мы добавляем фразу HAVING col != 0 после оператора GROUP BY, чтобы выбирать только те записи, у которых сумма colichestvobook.total не равна нулю.
КекПрофи (672) 1 год назад
Спасибо, получилось!
Похожие вопросы