gpt4 book ai didi

mysql - 从另一个表中的另一列计算列值

转载 作者:行者123 更新时间:2023-11-29 02:26:51 27 4
gpt4 key购买 nike

我有一个表格,其中包含商店中每件商品的单价和其他详细信息。

CREATE TABLE Item (Item_id CHAR(4), Description CHAR(40), Sizes CHAR(40), Weight REAL, Unit_price REAL, PRIMARY KEY(Item_id));

另一个包含每个订单中包含的项目的详细信息。

CREATE TABLE Order_contains_items (Item_id CHAR(4), Order_no INT, Quantity_ordered INT, Ordered_price REAL, PRIMARY KEY(Item_id, Order_no), FOREIGN KEY(Order_no) REFERENCES Order(Order_no), FOREIGN KEY(Item_id) REFERENCES Item(Item_id));

现在我要计算

Order_contains_items.Ordered_price = Item.Unit_price * Order_contains_items.Quantity_ordered WHERE Order_contains_items.Item_id = Item.Item_id

请注意,我希望它成为表本身的一部分,而不是作为不同的 View 或查询。我怎样才能做到这一点?我为此研究了触发器和其他机制,但它们是否适用于不同表中的值,尤其是在具有此类约束的情况下?

我尝试了以下基于 Column calculated from another column? 的触发器:

CREATE TRIGGER Order_price BEFORE INSERT ON Order_contains_items
FOR EACH ROW BEGIN
SET NEW.Ordered_price = Item.Unit_price * NEW.Quantity_ordered
WHERE NEW.Item_id = Item.Item_i
END;

但是好像没有用

最佳答案

以下是如何在 MySQL 中执行此操作(您的问题同时标记有 mysqlsql-server)

CREATE TRIGGER tg_bi_order_contains_items 
BEFORE INSERT ON Order_contains_items
FOR EACH ROW
SET NEW.Ordered_price =
(
SELECT Unit_price * NEW.Quantity_ordered
FROM Item
WHERE Item_id = NEW.Item_id
LIMIT 1
);

CREATE TRIGGER tg_bu_order_contains_items
BEFORE UPDATE ON Order_contains_items
FOR EACH ROW
SET NEW.Ordered_price =
(
SELECT Unit_price * NEW.Quantity_ordered
FROM Item
WHERE Item_id = NEW.Item_id
LIMIT 1
);

这是 SQLFiddle 演示

关于mysql - 从另一个表中的另一列计算列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20157972/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com