sql >> Databasteknik >  >> RDS >> Mysql

SQL Count från sammanfogad tabell

Din left join s tar in tabeller som har flera matchningar för ett givet id. Det snabba och enkla sättet att fixa antal är att använda count(distinct) istället för count() :

SELECT l.id, l.naam, beschrijving,
       count(distinct c.lijst_id) as aantal_cat, count(distinct wl.lijst_id) as aantal_lijst
FROM lijsten l
LEFT JOIN werknemerlijsten wl ON l.id = wl.lijst_id
LEFT JOIN categorieen c ON l.id = c.lijst_id
GROUP BY l.naam
ORDER BY naam;

Ett alternativt tillvägagångssätt är att aggregera tabellerna före sammanfogningen och göra räkningarna i underfrågan.



  1. UPPDATERINGAR till statistik

  2. Är NOLOCK (Sql Server-tips) dålig praxis?

  3. Hur POSITION() fungerar i PostgreSQL

  4. Cakephp 2.0 mysql-fråga