Eu estou um pouco preso a um pouco de SQL. Acho que não consigo formular a pergunta de maneira brilhante - deixe-me mostrar a você.
Tenho duas mesas, uma chamada pessoa e outra chamada compromisso. Estou tentando retornar o número de compromissos de uma pessoa (inclusive se eles tiverem zero). O compromisso contém o person_id
e há um person_id
por compromisso. Portanto, COUNT(person_id)
é uma abordagem sensata.
A pergunta:
SELECT person_id, COUNT(person_id) AS "number_of_appointments"
FROM appointment
GROUP BY person_id;
Retornará corretamente, o número de compromissos que um person_id possui. No entanto, uma pessoa que tem 0 compromissos não é devolvida (obviamente porque não está naquela mesa).
Ajustar a instrução para retirar person_id da tabela de pessoas me dá algo como:
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;
No entanto, isso ainda retornará apenas um person_id que tenha um compromisso e não o que eu quero que é um retorno com pessoas que não tenham nenhum compromisso!
Alguma sugestão, por favor?