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

Compte SQL de la table jointe

Votre left join s apportent des tables qui ont plusieurs correspondances pour un identifiant donné. Le moyen rapide et facile de corriger les décomptes est d'utiliser count(distinct) au lieu de 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;

Une approche alternative consiste à agréger les tables avant la jointure, en faisant le décompte dans la sous-requête.