从两个连接表中获取计数
Getting count from two joined tables
我有 4 个表,每个表都有一对多关系:
client -< inspection -< car -< issue
我正在尝试 select 客户的姓名和地址以及检查次数和问题次数。
这是我目前的情况:http://sqlfiddle.com/#!5/e62ba/29/0
在上面的示例中,client._id = 1
的结果应该是:
client_name client_address Inspection count Issue count
"John" "1 Main street" 2 3
对于client._id = 2
,它应该是:
client_name client_address Inspection count Issue count
"Jane" "1 Wall street" 0 0
是否可以在一个查询中实现这一结果,或者我是否必须使用子查询来计算问题数量?
您可以使用 count(distinct)
:
SELECT c.client_name, c.client_address,
COUNT(DISTINCT i._id) AS "Inspection count",
COUNT(DISTINCT iss._id) AS "Issue count"
FROM client c LEFT JOIN
inspection i
ON c._id = i.client_id LEFT JOIN
(car ca INNER JOIN
issue iss
ON iss.car_id = ca._id
)
ON ca.inspection_id = i._id
WHERE c._id = 1;
我有 4 个表,每个表都有一对多关系:
client -< inspection -< car -< issue
我正在尝试 select 客户的姓名和地址以及检查次数和问题次数。
这是我目前的情况:http://sqlfiddle.com/#!5/e62ba/29/0
在上面的示例中,client._id = 1
的结果应该是:
client_name client_address Inspection count Issue count
"John" "1 Main street" 2 3
对于client._id = 2
,它应该是:
client_name client_address Inspection count Issue count
"Jane" "1 Wall street" 0 0
是否可以在一个查询中实现这一结果,或者我是否必须使用子查询来计算问题数量?
您可以使用 count(distinct)
:
SELECT c.client_name, c.client_address,
COUNT(DISTINCT i._id) AS "Inspection count",
COUNT(DISTINCT iss._id) AS "Issue count"
FROM client c LEFT JOIN
inspection i
ON c._id = i.client_id LEFT JOIN
(car ca INNER JOIN
issue iss
ON iss.car_id = ca._id
)
ON ca.inspection_id = i._id
WHERE c._id = 1;