Du vil have en ydre joinforbindelse til dette (og du skal bruge person som "kørende" bord)
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;
Grunden til at dette virker er, at den ydre (venstre) join vil returnere NULL
for de personer, der ikke har en tid. Den samlede funktion count()
tæller ikke NULL
værdier og dermed får du et nul.
Hvis du vil lære mere om outer joins, er her en fin vejledning:http://sqlzoo.net/wiki/Using_Null