2017-01-13 5 views
0

Я пытаюсь обновить таблицу Mysql на основе запроса SUM другой таблицы. Я получаю обратно «Неизвестного столбец„t2.part_number“в„на пункт“»Mysql Несколько запросов SUM с JOIN

Вот мой запрос

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` 
+1

вы должны включить столбец PART_NUMBER в подзапроса – Mihai

+1

это потому, что t2 это псевдоним подзапроса и на нем вы не имеете 'part_number' либо добавить его на подзапрос вместе с группой по или объяснить лучше, что он должен делать, мы можем помочь. –

+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` 
-2

вы можете решить этот isue путем изменений , как Total в вашем запросе к югу от в part_number

+0

Этот ответ неверен, так как пользователю требуется поле part_number для JOIN с другой таблицей. –

+0

, поэтому мы можем добавить part_number befor sum –

+0

Что вы можете сделать, но тогда вам нужно добавить предложение group by. –

-1

В «на пункте» t2 не относится к таблице «saelshistory», но вместо этого он относится к временной таблице, созданным с помощью запроса на выборку по SalesHistory.

Чтобы иметь возможность обращаться к part_number, он должен быть выбран первым, а затем использоваться в группе, это изменит итоговые значения, но похоже, что вам нужна агрегирование по номеру в любом случае, внешний псевдоним таблицы t2 должен быть как

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

Для запроса потребуется предложение group by по запросу. –

+0

Да, я должен был добавить это, но пытался объяснить причину сообщения об ошибке. В следующий раз обязательно добавлю более полный ответ. Благодаря! – stk

+0

Вы можете исправить свой ответ. Как только вы это сделаете, я удалю свой downvote. –

Смежные вопросы