Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Contando o número de linhas unidas na junção esquerda


Que tal algo como isso:
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;

A função COUNT() contará cada linha, mesmo se tiver null. Usando SUM() e CASE, você pode contar apenas valores não nulos.

EDIT:Uma versão mais simples retirada do comentário principal:
SELECT m.MESSAGEID, COUNT(mp.MESSAGEID) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

Espero que ajude.