繁体   English   中英

连接表的SQL计数

[英]SQL Count from joined table

我有一个表“ 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 s引入了具有给定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;

另一种方法是在联接之前聚合表,并在子查询中进行计数。

以下工作! 谢谢..仍然不太确定独特的产品在做什么..它在寻找独特的价值吗? 谢谢!

 SELECT l.id, l.naam, beschrijving, count(distinct wl.werknemer_id) as aantal_lijst,     count(distinct c.id) as aantal
    FROM lijsten l
    LEFT JOIN werknemerlijsten wl ON l.id = wl.lijst_id
    LEFT JOIN categorieen c ON c.lijst_id = wl.lijst_id
    GROUP BY l.naam
    ORDER BY naam

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM