我有一个表“ lijsten”,一个表“ werknemerlijsten”和一个表“ categorieen”。
现在我正在使用查询来获取计数
SELECT id, naam, beschrijving, count(wl.werknemer_id) as aantal FROM lijsten l LEFT JOIN werknemerlijsten wl ON l.id = wl.lijst_id GROUP BY l.naam ORDER BY naam
但是,当我尝试使用另一个表的另一个计数进行相同的查询时,结果为假。
SELECT l.id, l.naam, beschrijving, count(c.lijst_id) as aantal_cat, count(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
任何想法我可能做错了吗?谢谢
您left join的引入了具有给定ID多个匹配项的表。固定计数的快速简便方法是使用count(distinct)而不是count():
left join
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;
另一种方法是在联接之前聚合表,并在子查询中进行计数。