Quiere una combinación externa para esto (y necesita usar person como la tabla "conductora")
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;
La razón por la que esto funciona es que la combinación externa (izquierda) devolverá NULL
para aquellas personas que no tengan cita. La función agregada count()
no contará NULL
valores y por lo tanto obtendrá un cero.
Si desea obtener más información sobre las uniones externas, aquí hay un buen tutorial:http://sqlzoo.net/wiki/Using_Null