Как правильно работать с NULL полями после JOIN при GROUP BY в MySQL? Приветствую! Подскажите, как добиться верных результатов. Есть таблички: Для удобства залил в песочницу sqlfiddle.com/#!9/1e9b8c/19CREATE TABLE sour (`id` int, `source` varchar(7), `description` varchar(55)) ;
INSERT INTO app (`id`, `sour_id`, `name`) VALUES (1, 1, 'zzz1'), (2, 3, 'zzz2'), (3, 3, 'zzz3'), (4, 1, 'zzz4'), (5, 3, 'zzz5'), (6, 4, 'zzz6') ; При выполнении такого запросаSELECT sour.source, COUNT(app.sour_id) as `c` FROM `app` RIGHT JOIN `sour` ON sour.id = app.sour_id WHERE app.id > 2 GROUP BY(app.sour_id); Получаю raz 1 tri 2 chetire 1 Как вывести что dva = 0 количеству записей?
Для того чтобы учесть значения, где количество записей равно 0, можно использовать функцию IFNULL() во время подсчета COUNT(). Вот исправленный запрос:
SELECT sour.source, IFNULL(COUNT(app.id), 0) as c
FROM sour
LEFT JOIN app ON sour.id = app.sour_id WHERE app.id > 2 OR app.id IS NULL GROUP BY sour.id;
Этот запрос вернет результат, включая значения, где количество записей равно 0.
Для того чтобы учесть значения, где количество записей равно 0, можно использовать функцию IFNULL() во время подсчета COUNT(). Вот исправленный запрос:
SELECT
sour.source,
IFNULL(COUNT(app.id), 0) as c FROM sour LEFT JOIN app ON sour.id = app.sour_id
WHERE app.id > 2 OR app.id IS NULL
GROUP BY sour.id;
Этот запрос вернет результат, включая значения, где количество записей равно 0.