没有重复的SQL多重连接[重复]

问题描述 投票:0回答:1

假设我有一个客户表、订单表和报价表。每个客户可以没有、一个或多个订单和报价条目。

我可以这样得到每个客户订购的产品数量:

SELECT CustomerName, SUM(Orders.OrdQuantity) as TotalOrderQty 
from Customer 
join Orders on Customer.id=Orders.CustomerId 
group by CustomerName;

我可以做类似的查询来获取这样的报价数量:

SELECT CustomerName, SUM(Quotes.QuoteQuantity) as TotalQuoteQty 
from Customer 
join Quotes on Customer.id=Quotes.CustomerId 
group by CustomerName;

但是我如何在一个查询中同时执行这两项操作才能得到这样的结果集:

CustomerName TotalOrderQty TotalQuoteQty

当我尝试进行多个内部联接时,如果客户在两个表中都有条目,我会计算两次数量。

mysql sql sum aggregate-functions
1个回答
0
投票

但是我如何在一个查询中同时执行这两项操作?

您可以在加入之前进行预聚合——或者,由于您只需要每个表中的一个聚合列,您还可以使用相关子查询:

select c.customerName,
    (select sum(o.OrdQuantity)   from Orders o where c.id = o.CustomerId) TotalOrderQty,
    (select sum(q.QuoteQuantity) from Quotes q where c.id = q.CustomerId) TotalQuoteQty
from Customers c
© www.soinside.com 2019 - 2024. All rights reserved.