Mig*_*ens 2 mysql sql group-by count
我有一张桌子'lijsten',一张桌子'werknemerlijsten'和一张桌子'类别'.
现在我正在使用Query来获取计数
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
Run Code Online (Sandbox Code Playgroud)
但是当我从另一个表中尝试使用另一个计数的相同查询时,结果是错误的.
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
Run Code Online (Sandbox Code Playgroud)
知道我可能做错了什么吗?谢谢
你的left joins正在引入具有给定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;
Run Code Online (Sandbox Code Playgroud)
另一种方法是在连接之前聚合表,在子查询中执行计数.