left join
は、特定のIDに複数一致するテーブルを取り込みます。カウントを修正するためのすばやく簡単な方法は、count(distinct)
を使用することです。 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;
別のアプローチは、結合の前にテーブルを集約し、サブクエリでカウントを行うことです。