Я новичок в MySQL.
Я хочу обновить стоимость заказа таблицы, исходя из значения розничной цены и количества заказанного товара. У меня есть следующие таблицы (упрощенно для этого вопроса):
Products
* * 1004
ProductID
Retail_price
Sales_orders
SalesOrdersID
Order_price //This is the derived attribute that I want to update when the below Sales_products table is updated.
Sales_products
:
SalesOrdersID
ProductID
Quantity
Следующий код работает в том, что я получаю правильный Order_price
, и он выводит в своей собственной таблице. Но я хочу обновить атрибут Sales_orders.Order_price
, а не вызывать цену заказа в таблице.
SELECT
sales_product.SalesOrdersID,
SUM(Quantity * Retail_price) as "Total price of order"
FROM
sales_product
LEFT JOIN products ON sales_product.ProductID = products.ProductID
GROUP BY sales_product.SalesOrdersID
Я также попробовал триггер, но он возвращает ошибку, когда я пытаюсь вставить новую строку в Sales_orders
.
CREATE trigger find_order_price2
AFTER INSERT ON Sales_products
FOR EACH ROW
BEGIN
DECLARE price int;
SELECT
sales_product.SalesOrdersID, SUM(Quantity * Retail_price) INTO price
FROM
sales_product
LEFT JOIN
products ON sales_product.ProductID = products.ProductID;
UPDATE sales_orders
set Order_price = price;
END;
$$
DELIMITER ;
Ошибка вернулась:
Код ошибки: 1222. Используемые операторы SELECT имеют разное количество столбцов
Надеюсь, кто-нибудь может помочь с этим?