Как правильно работать с NULL полями после JOIN при GROUP BY в MySQL? Приветствую!
Подскажите, как добиться верных результатов. Есть таблички:
Для удобства залил в песочницу sqlfiddle.com/#!9/1e9b8c/19CREATE TABLE sour
(`id` int, `source` varchar(7), `description` varchar(55))
;

INSERT INTO sour
(`id`, `source`, `description`)
VALUES
(1, 'raz', 'aza1'),
(2, 'dva', 'aza2'),
(3, 'tri', 'aza3'),
(4, 'chetire', 'aza4')
;
CREATE TABLE app
(`id` int, `sour_id` int, `name` 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 количеству записей?

21 Авг 2019 в 06:28
86 +1
0
Ответы
1

Для того чтобы учесть значения, где количество записей равно 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.

20 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир