Puede que se de el caso de que encuentres algún problema en tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.
Solución:
Desea 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) volverá 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
Debes usar LEFT JOIN
en vez de INNER JOIN
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;
si realiza la unión externa (con el conteo) y luego usa este resultado como una subtabla, puede obtener 0 como se esperaba (gracias a la función nvl)
Ex:
select P.person_id, nvl(A.nb_apptmts, 0) from
(SELECT person.person_id
FROM person) P
LEFT JOIN
(select person_id, count(*) as nb_apptmts
from appointment
group by person_id) A
ON P.person_id = A.person_id
Te mostramos las comentarios y valoraciones de los usuarios
Si piensas que ha sido provechoso nuestro artículo, te agradeceríamos que lo compartas con otros entusiastas de la programación así contrubuyes a extender nuestra información.