sql >> Base de Datos >  >> RDS >> Oracle

Contando el número de filas unidas en la unión izquierda

¿Qué tal algo como esto:

SELECT m.MESSAGEID, sum((case when mp.messageid is not null then 1 else 0 end)) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

La función COUNT() contará cada fila, incluso si tiene un valor nulo. Usando SUM() y CASE, solo puede contar valores no nulos.

EDITAR:una versión más simple tomada del comentario superior:

SELECT m.MESSAGEID, COUNT(mp.MESSAGEID) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

Espero que ayude.