Неправильное использование групповой функции 1111 - PullRequest
0 голосов
/ 19 сентября 2018

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

Но я продолжаю получать недопустимое использование групповой функции 1111

UPDATE `Order`
INNER JOIN orderitem
ON order.OrderID = orderitem.OrderId
SET Order.TotalAmmount = SUM(orderitem.UnitPrice)
WHERE orderitem.OrderitemId = order.OrderId

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы не можете использовать агрегированный результат непосредственно в заданном значении (поскольку уровень агрегации между результатом и каждой строкой таблицы не одинаков), вы должны использовать внутреннее соединение в подзапросе для агрегированного результата и использоватьрезультат для подзапроса

    UPDATE `Order`
    INNER JOIN (
        select orderitemID, SUM(orderitem.UnitPrice) sum_price
        from orderitem 
        group by orderitemID
    )  t on t.orderitemID = order.OrderId 
    SET  Order.TotalAmmount = t.sum_price
0 голосов
/ 19 сентября 2018

Используйте подзапрос для агрегирования:

UPDATE `Order`
SET `Order`.TotalAmmount = 
  (SELECT SUM(UnitPrice)
   FROM orderitem
   WHERE OrderitemId = `Order`.OrderId)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...