Sql 从多个表中获取数量之和?

Sql 从多个表中获取数量之和?,sql,Sql,我至少有8个表,我需要从中匹配客户名称,获取数量,并获取从这8个表中获取的所有数量的总和。我正在尝试编写一个代码,它将忽略数量之和为零的客户 例如,让我们以两个表purchase\u sugar和sales\u sugar为例,我尝试了很多查询,但只有这一个返回了一些错误的结果 SELECT sum(purchase_sugar.qty + sales_sugar.qty) AS Total_Amount from purchase_sugar inner join sales_sugar on

我至少有8个表,我需要从中匹配客户名称,获取数量,并获取从这8个表中获取的所有数量的总和。我正在尝试编写一个代码,它将忽略数量之和为零的客户

例如,让我们以两个表purchase\u sugar和sales\u sugar为例,我尝试了很多查询,但只有这一个返回了一些错误的结果

SELECT sum(purchase_sugar.qty + sales_sugar.qty) AS Total_Amount from purchase_sugar inner join sales_sugar on purchase_sugar.supplier = sales_sugar.customer WHERE purchase_sugar.supplier = "+str(x.id)+"
表格结构如下所示: purchase\u sugar有两列:供应商和数量。 销售人员具有客户和数量等结构


如果我提供一个名称并在这些表中搜索并获得数量,如何获得这些表的数量之和。另一件事是,我不希望在所有的表格中都能找到客户。如果在一个表中找到,我们应该只从该表中获取数量,因此我认为JOIN没有用处,或者可能是我错了。

您应该加入sum,而不是对JOIN求和

select t1.purchase_sum + sales_sum as Total_Amount 
from (
  select  purchase_sugar.supplier, sum(purchase_sugar.qty) as purchase_sum 
  from  purchase_sugar 
  group by  purchase_sugar.supplier 
) t1 
inner join  (
  select  sales_sugar.customer, sum(sales_sugar.qty) as sales_sum 
  from  sales_sugar 
  group by  sales_sugar.customer
) t2 on t1.supplier = t2.customer and t1.supplier = "+str(x.id)+" 

要解决供应商/客户不在所有表中的情况,可以使用
union all
group by

select name, sum(p_qty) as sum_p, sum(s_qty) as sum_s,
       sum(p_qty) + sum(s_qty)
from ((select ps.supplier as name, ps.qty as p_qty, 0 as s_qty
       from  purchase_sugar ps 
      ) union all
      (select ss.customer as name, 0, ss.qty 
       from sales_sugar ss
      ) 
     ) s
group by name;
注:

  • 此查询获取所有名称的结果。您可以使用
    where
    子句将结果限制为一个
    name
  • 如果您只想得到总数,则不必将数量拆分为两列(或八列)
  • 您可以在
    联合all
    之前进行聚合,但这不是必需的

您的问题不清楚。。添加适当的数据样本。。以及预期的结果(汉克斯兄弟:)