我试图加入并将三个表合并在一起(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
提前感谢您的帮助!
答案 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