Jak uwzględnić „zero” / „0” wyników w agregacie COUNT?
Właśnie trochę utknąłem z SQL. Nie sądzę, żebym potrafił znakomicie sformułować to pytanie - więc pozwól, że ci pokażę.
Mam dwie tabele, jedna nazywa się osoba, druga nazywa się spotkanie. Próbuję zwrócić liczbę spotkań danej osoby (w tym, jeśli mają zero). Spotkanie zawieraperson_id
i jestperson_id
na spotkanie. WięcCOUNT(person_id)
to rozsądne podejście.
Zapytanie:
SELECT person_id, COUNT(person_id) AS "number_of_appointments"
FROM appointment
GROUP BY person_id;
Zwróci poprawnie, liczbę spotkań, które osoba_id ma. Jednak osoba, która ma 0 spotkań, nie jest zwracana (oczywiście, ponieważ nie ma ich w tej tabeli).
Poprawianie instrukcji, aby wziąć person_id z tabeli osób, daje mi coś takiego:
SELECT person.person_id, COUNT(appointment.person_id) AS "number_of_appointments"
FROM appointment
JOIN person ON person.person_id = appointment.person_id
GROUP BY person.person_id;
To jednak nadal zwróci tylko person_id, który ma spotkanie, a nie to, czego chcę, czyli zwrot z osobami, które mają 0 spotkań!
Wszelkie sugestie proszę?