K tomu chcete vnější spojení (a musíte použít osobu jako "řídící" stůl)
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;
Důvod, proč to funguje, je ten, že vnější (levé) spojení vrátí NULL
pro osoby, které nemají schůzku. Agregační funkce count()
nebude počítat NULL
hodnoty, a tak dostanete nulu.
Pokud se chcete dozvědět více o vnějších spojeních, zde je pěkný návod:http://sqlzoo.net/wiki/Using_Null