Oracle
 sql >> Database >  >> RDS >> Oracle

Conteggio del numero di righe unite nel join sinistro

Che ne dici di qualcosa del genere:

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 funzione COUNT() conterà ogni riga, anche se ha null. Usando SUM() e CASE, puoi contare solo valori non nulli.

EDIT:una versione più semplice presa dal commento in alto:

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

Spero di esserti stato d'aiuto.