MySQL多表加入不正确的求和

时间:2014-08-15 15:14:16

标签: mysql sql

我试图加入并将三个表合并在一起(MySQL),按照跟踪编号'和' order_ID':

invoice_data_dhl
master_track_nums
payments

问题 :当order_ID为多个payments行时,它会将DHL_COST总和乘以order_ID的payments表。

SELECT 
invoice_data_dhl.Waybill_Number,
sum(invoice_data_dhl.AWB_Original_Amount) AS DHL_COST,
master_track_nums.order_ID,
sum(payments.revenue) AS REVENUE
FROM invoice_data_dhl
LEFT JOIN master_track_nums
ON invoice_data_dhl.Waybill_Number = master_track_nums.track
LEFT JOIN payments
ON master_track_nums.order_ID = payments.order_ID
GROUP BY invoice_data_dhl.Waybill_Number

是否可以这样编写,以便我可以通过单个查询获得结果,输出结果如下所示?

Waybill_Number  DHL_COST    order_ID    REVENUE
7022193792       182.52       110632      234
4536137201      3311.96       107637     4074
3927382187       248.95       110384      636
7812896712        74.85       106998      247

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

UNTESTED:但是像这样:更新:没有删除内联查询中的收入总和。

SELECT A.waybill_number, A.DHL_COST, A.Order_ID, Sum(payments.Revenue)
FROM 
  (SELECT invoice_data_dhl.Waybill_Number,
     sum(invoice_data_dhl.AWB_Original_Amount) AS DHL_COST,
     master_track_nums.order_ID
   FROM invoice_data_dhl
   LEFT JOIN master_track_nums
       ON invoice_data_dhl.Waybill_Number = master_track_nums.track
   GROUP BY master_track_nums.Order_ID, invoice_data_dhl.Waybill_Number) A
LEFT JOIN payments
  ON A.order_ID = payments.order_ID
GROUP BY A.waybill_number, A.DHL_COST, A.Order_ID