Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL多表联接不正确的求和_Mysql_Sql - Fatal编程技术网

MySQL多表联接不正确的求和

MySQL多表联接不正确的求和,mysql,sql,Mysql,Sql,我正在尝试将三个表连接在一起并求和(MySQL),按“跟踪编号”和“订单ID”分组: invoice_data_dhl master_track_nums payments 问题:当一个订单ID有多个付款行时,它将DHL\u成本总计乘以订单ID的付款表中的结果数 SELECT invoice_data_dhl.Waybill_Number, sum(invoice_data_dhl.AWB_Original_Amount) AS DHL_COST, master_track_nums.ord

我正在尝试将三个表连接在一起并求和(MySQL),按“跟踪编号”和“订单ID”分组:

invoice_data_dhl
master_track_nums
payments
问题:当一个订单ID有多个
付款
行时,它将
DHL\u成本
总计乘以订单ID的
付款
表中的结果数

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

提前谢谢你的帮助

未测试:但类似以下内容:更新:未删除内联查询中的收入总和

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

“可以这样写吗?这样我就可以通过一个输出如下结果的查询获得结果?”。在执行联接之前,必须聚合结果。因此,一个内联查询将返回所需的DHL_成本,然后添加到付款中,导致成本翻倍。谢谢!我只需在末尾添加
groupby
语句:“groupby A.Waybill_Number”(并匹配第一行的大写字母)。