Du vill ha en yttre sammanfogning för detta (och du måste använda person som "körbord")
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;
Anledningen till att detta fungerar är att den yttre (vänster) joinen kommer att returnera NULL
för de personer som inte har en tid. Den aggregerade funktionen count()
kommer inte att räknas NULL
värden och därmed får du en nolla.
Om du vill lära dig mer om yttre sammanfogningar, här är en trevlig handledning:http://sqlzoo.net/wiki/Using_Null