Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Zählen der Anzahl der verbundenen Zeilen in der linken Verbindung

Wie wäre es mit so etwas:

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;

Die Funktion COUNT() zählt jede Zeile, auch wenn sie null hat. Mit SUM() und CASE können Sie nur Nicht-Null-Werte zählen.

BEARBEITEN:Eine einfachere Version aus dem obersten Kommentar:

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

Hoffe das hilft.