我需要一个从三个表(公司、权限 A、权限 B)中读取的 SQL 查询。权限 A 和 B 是 m:n 关系表。我想计算与公司相关的权限 A 和 B 中的条目。
公司结构:
CID |名称 | ...
权利结构A
骑行 |客户ID | ...
权利结构B
日度 |客户ID | ...
这是我当前的 SQL 语句。我有时会得到正确的值,但有时不会。我不知道为什么。
SELECT
company.*,
count(rightsa.RIDe) AS AnzahlE,
count(rightsb.RIDu) AS AnzahlU
FROM company
LEFT JOIN rightsa ON company.CID = rightsa.CID
LEFT JOIN rightsb ON company.CID = rightsb.CID
GROUP BY company.CID ORDER BY company.name;
最佳答案
在您的计数函数中使用 DISTINCT
,因此它将只计算每个公司的不同 rightsa.RIDe
和 rightsb.RIDu
SELECT company.*,
count(DISTINCT rightsa.RIDe) AS AnzahlE,
count(DISTINCT rightsb.RIDu) AS AnzahlU
FROM company
LEFT JOIN rightsa ON company.CID = rightsa.CID
LEFT JOIN rightsb ON company.CID = rightsb.CID
GROUP BY company.CID ORDER BY company.name;
关于mysql - 三张表的 SQL 二次计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172153/