Je left join
s brengen tabellen binnen die meerdere overeenkomsten hebben voor een bepaalde id. De snelle en gemakkelijke manier om tellingen te corrigeren, is door count(distinct)
. te gebruiken in plaats van 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;
Een alternatieve benadering is om de tabellen vóór de join samen te voegen, waarbij de tellingen in de subquery worden uitgevoerd.