使用左联接的多个关系的sql select计数

使用左联接的多个关系的sql select计数,sql,Sql,我有一个关于“分支”、“订单”和“产品”的表。每个订单和产品都连接到一个具有分支id的分支。我需要一个sql语句来获取所有分支的列表,其中一个字段表示有多少订单,一个字段表示有多少产品 这项工作: 选择b.*,将(o.id)计数为来自分支b的orderCount 按b.id在(o.branch\U id=b.id)组上左连接订单o 但它只得到订单数量,而不是产品。 如果我将其更改为添加产品数量,则数量是错误的,因为它得到的是订单数量*产品数量 如何在同一SQL语句中获得订单和产品的数量?类似的方

我有一个关于“分支”、“订单”和“产品”的表。每个订单和产品都连接到一个具有分支id的分支。我需要一个sql语句来获取所有分支的列表,其中一个字段表示有多少订单,一个字段表示有多少产品

这项工作:

选择b.*,将(o.id)计数为来自分支b的orderCount
按b.id在(o.branch\U id=b.id)组上左连接订单o

但它只得到订单数量,而不是产品。 如果我将其更改为添加产品数量,则数量是错误的,因为它得到的是订单数量*产品数量


如何在同一SQL语句中获得订单和产品的数量?

类似的方法应该可以工作(至少在SQL server上-您没有指定引擎)

请尝试:

select
    *,
    (select COUNT(*) from Orders o where o.branch_id=b.id) OrderCount,
    (select COUNT(*) from Products p where o.branch_id=p.id) ProductCount
From 
    branches b

此解决方案更灵活,因为您可以同时放置所有条件以获得特定项目的计数,谢谢。像这样的查询是一个很滑的斜坡。您可以使代码非常慢,非常快。
select
    *,
    (select COUNT(*) from Orders o where o.branch_id=b.id) OrderCount,
    (select COUNT(*) from Products p where o.branch_id=p.id) ProductCount
From 
    branches b