Mysql使用JOIN进行多个SUM查询

时间:2017-01-13 17:33:56

标签: mysql

我正在尝试基于另一个表的SUM查询更新Mysql表。 我回来了#34;未知专栏&#t; t2.part_number'在' on''"

这是我的查询

UPDATE Dream t1 JOIN
   (
    SELECT SUM(`t2`.`Sales_1_Month_Prior`)+SUM(`t2`.`Sales_2_Month_Prior`)+SUM(`t2`.`Sales_3_Month_Prior`)+SUM(`t2`.`Sales_4_Month_Prior`)+SUM(`t2`.`Sales_5_Month_Prior`)+SUM(`t2`.`Sales_6_Month_Prior`)+SUM(`t2`.`Sales_7_Month_Prior`)+SUM(`t2`.`Sales_8_Month_Prior`)+SUM(`t2`.`Sales_9_Month_Prior`)+SUM(`t2`.`Sales_10_Month_Prior`)+SUM(`t2`.`Sales_11_Month_Prior`)+SUM(`t2`.`Sales_12_Month_Prior`) as Total
    FROM saleshistory t2
    WHERE location = '98'
   ) t2
   ON `t1`.`Part_Number` = `t2`.`part_number`
SET `t1`.`ETAUsage` = `t2`.`Total`

3 个答案:

答案 0 :(得分:1)

您不在子查询中选择Part_Number以加入条件

所以例如:尝试选择(并分组以获得正确的总和结果)

  UPDATE Dream t1 
  JOIN
     (
      SELECT `t2`.`Part_Number`, 
      SUM(`t2`.`Sales_1_Month_Prior`)+
        SUM(`t2`.`Sales_2_Month_Prior`)+
        SUM(`t2`.`Sales_3_Month_Prior`)+
        SUM(`t2`.`Sales_4_Month_Prior`)+
        SUM(`t2`.`Sales_5_Month_Prior`)+
        SUM(`t2`.`Sales_6_Month_Prior`)+
        SUM(`t2`.`Sales_7_Month_Prior`)+
        SUM(`t2`.`Sales_8_Month_Prior`)+
        SUM(`t2`.`Sales_9_Month_Prior`)+
        SUM(`t2`.`Sales_10_Month_Prior`)+
        SUM(`t2`.`Sales_11_Month_Prior`)+
        SUM(`t2`.`Sales_12_Month_Prior`) as Total
      FROM saleshistory t2
      WHERE location = '98'
      group by  `t2`.`Part_Number`
     ) t3
     ON `t1`.`Part_Number` = `t3`.`part_number`
  SET `t1`.`ETAUsage` = `t3`.`Total`

答案 1 :(得分:-1)

在“on子句”中,t2不是指“saelshistory”表,而是指使用saleshistory上的select查询创建的临时表。

为了能够引用part_number,必须先选择它然后在group by中使用,这会改变总数,但看起来你需要part_number的聚合,无论如何, 外表别名t2应该像

SELECT part_number, SUM(....
FROM saleshistory
GROUP BY part_number

答案 2 :(得分:-2)

您可以通过作为part_number

在子查询中更改为总计来解决此问题