Держите нулевые значения с GROUP BY и SUM в mysql - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть две таблицы career_types и бронирования

career_types

id | name
1 | foo
2 | bar
3 | baz

Бронирование

id | career_type_id | details
1 | 1 | foo
2 | 1 | bar
3 | 2 | baz

В моей таблице бронирований много записей для всех типов карьеры, кроме career_types.id, равного 3.

Я хочу запрос, в котором будет указан список всех моих career_types.name и сколько у каждого бронирования, а в случае career_types.id = 1, где для него нет бронирований. Я хочу вернуть 0.

Пока я пробовал варианты

SELECT career_types.name, sum(bookings.id)
FROM career_types
LEFT JOIN bookings ON (career_types.id = bookings.career_type_id)
GROUP BY career_types.id

И результат, который я ищу, это

career_types.name | sum
foo | 2
bar | 1
baz | 0

Но в настоящее время я не могу получить вывод для баз.

1 Ответ

0 голосов
/ 05 сентября 2018

Агрегатные функции включают только ненулевые значения в свои вычисления. В случае SUM и большинства агрегатных функций результат равен нулю, если не встречаются ненулевые значения. Если нужен ноль, а не ноль, это можно объяснить просто с помощью: IFNULL(SUM(x), 0)

...