Comment inclure “zéro” / “0” résultats dans agrégat COUNT?

Je viens tout juste de me suis un peu coincé avec une SQL. Je ne pense pas que je peux formuler la question avec brio - alors laissez-moi vous montrer.

J'ai deux tables, une personne appelée, l'une appelée rendez-vous. Je suis en train de retourner le nombre de rendez-vous a une personne (y compris s'ils ont zéro). Rendez-vous contient la person_id et il y a un person_id par rendez-vous. Donc COUNT(person_id) est une approche pratique.

La requête:

SELECT person_id, COUNT(person_id) AS "number_of_appointments" 
FROM appointment 
GROUP BY person_id;

Sera de retour correctement, le nombre de rendez-vous un person_id a. Toutefois, une personne qui a 0 rendez-vous n'est pas retournée (évidemment, comme ils ne sont pas dans ce tableau).

Peaufiner la déclaration de prendre person_id de la table personne me donne quelque chose comme:

SELECT person.person_id, COUNT(appointment.person_id) AS "number_of_appointments"
FROM appointment
JOIN person ON person.person_id = appointment.person_id
GROUP BY person.person_id;

Cela, cependant, ne sera qu'un retour d'un person_id qui a un rendez-vous et pas ce que je veux, qui est un retour avec des personnes qui ont 0 rendez-vous!

Des suggestions s'il vous plaît?

  • Que faire si je veux obtenir zéro | 0 comme résultat sur une seule table. J'ai vm_tool_licenses de table et de requête est comme ci-dessous, sélectionnez vm_tool_id, count(vm_tool_license_active) à partir de vm_tool_licenses groupe par vm_tool_license_active,vm_tool_id avoir vm_tool_license_active = false`
InformationsquelleAutor BrownE | 2013-02-09