mysql - 三张表的 SQL 二次计数

标签 mysql sql

我需要一个从三个表(公司、权限 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.RIDerightsb.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/

相关文章:

mysql - 在 SQL 的 where 子句中使用 case/if

mysql - 获取三个不同表中包含相同 id 的所有行

SQL 按一定数量分组

java - 无法在 HSQLDB 中设置 md5 密码 : routine signature not found

php - 设计一个数据库来跟踪所有者

sql - 获取值的所有排列 - 成对

c# - .NET更新难度

具有多个选择的 php sql 不起作用

mysql - 是否可以确定 MySQL 中的查询是否会锁定表?

Ubuntu 上无法访问 mysql 文件夹