sql >> Databáze >  >> RDS >> Oracle

Počítání počtu spojených řádků v levém spojení

Co třeba něco takového:

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;

Funkce COUNT() bude počítat každý řádek, i když má hodnotu null. Pomocí SUM() a CASE můžete počítat pouze nenulové hodnoty.

EDIT:Jednodušší verze převzatá z horního komentáře:

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

Doufám, že to pomůže.



  1. Příklady DATEDIFF() v SQL Server

  2. mysql Omezení cizího klíče je nesprávně vytvořená chyba

  3. Volitelný argument ve funkci PL/pgSQL

  4. 2 způsoby, jak zkontrolovat, zda je na serveru SQL povolen přístup k datům (příklady T-SQL)