Искате външно присъединяване за това (и трябва да използвате person като маса за "шофиране")
SELECT person.person_id, COUNT(appointment.person_id) AS "number_of_appointments"
FROM person
LEFT JOIN appointment ON person.person_id = appointment.person_id
GROUP BY person.person_id;
Причината, поради която това работи, е, че външното (ляво) присъединяване ще върне NULL
за тези лица, които нямат уговорка. Агрегатната функция count()
няма да отчита NULL
стойности и по този начин ще получите нула.
Ако искате да научите повече за външните съединения, ето един хубав урок:http://sqlzoo.net/wiki/Using_Null