Mysql
 sql >> Database >  >> RDS >> Mysql

Conteggio SQL dalla tabella unita

Il tuo left join s stanno introducendo tabelle che hanno più corrispondenze per un determinato ID. Il modo semplice e veloce per correggere i conteggi è utilizzare count(distinct) invece di 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;

Un approccio alternativo consiste nell'aggregare le tabelle prima del join, effettuando i conteggi nella sottoquery.