【发布时间】:2011-05-29 00:44:21
【问题描述】:
我们要查询三个表,以了解每个企业的客户数量和每个企业的记录数
三个表分别是:
businessDetails
-------------------
businessDetails.ID
businessDetails.name
clientDetails
-------------------
clientDetails.ID
clientDetails.businessDetailsID
records
-------------------
records.ID
records.businessDetailsID
我们可以一次从两个表中选择一个计数(businessDetails 加上 clientDetails 或记录),这没有任何问题。例如
SELECT businessDetails.name AS businessName
, COUNT(clientDetails.businessDetailsID) AS totalClients
FROM `businessDetails`
INNER JOIN clientDetails
ON clientDetails.businessDetailsID = businessDetails.businessDetailsID
GROUP BY
businessDetails.name
ORDER BY
totalClients DESC
这个查询给了我们预期的很好的结果:
--------------------------------
businessName | totalClients
--------------------------------
Initech | 23
Cylon Inc | 148
The Dude Ltd | 71
我们遇到的问题是如何同时对 clientDetails 和 records 进行计数。我们尝试了以下查询,但发现由于某种原因它会乘以 totalClients 的数量:
SELECT businessDetails.name AS businessName
, COUNT(clientDetails.businessDetailsID) AS totalClients
, COUNT(records.businessDetailsID) AS totalRecords
FROM `businessDetails`
INNER JOIN clientDetails
ON clientDetails.businessDetailsID = businessDetails.businessDetailsID
INNER JOIN records ON records.businessDetailsID = businessDetails.ID
GROUP BY
businessDetails.name
ORDER BY
totalClients DESC
这会返回类似的结果:
--------------------------------------------------------
businessName | totalClients | totalRecords
--------------------------------------------------------
Initech | 93 | 93
Cylon Inc | 398 | 398
The Dude Ltd | 215 | 215
我希望我们只是犯了一些简单的错误。任何帮助将不胜感激。
【问题讨论】:
标签: mysql count inner-join