从两个连接表中获取计数

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;