Oracle
 sql >> Base de données >  >> RDS >> Oracle

Compter le nombre de lignes jointes dans la jointure gauche

Que diriez-vous de quelque chose comme ça :

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 fonction COUNT() comptera chaque ligne, même si elle a la valeur null. En utilisant SUM() et CASE, vous ne pouvez compter que les valeurs non nulles.

EDIT :Une version plus simple tirée du commentaire du haut :

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

J'espère que ça aide.