【问题标题】:Getting count from two joined tables从两个连接的表中获取计数
【发布时间】:2015-03-10 01:32:28
【问题描述】:

我有 4 个表,每个表都是一对多的关系:

client -< inspection -< car -< issue

我正在尝试选择客户的姓名和地址以及检查次数和问题次数。

这是我目前所拥有的: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

是否有可能在一个查询中实现此结果,还是我必须使用子查询来计算问题计数?

【问题讨论】:

    标签: sql sqlite join count


    【解决方案1】:

    您可以使用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;
    

    【讨论】:

    • 是的,这正是我所追求的。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 2014-07-07
    相关资源
    最近更新 更多