在mysql中添加一个计算列
问题描述:
我试图在我的order_details表中添加一个名为'price'的列。我希望它能根据其他表格中产品的不同价格来计算价格。在mysql中添加一个计算列
alter table order_detail add column Price decimal(5,2) as
(CASE (order_detail.item_id,
item.item_id,
bagel.item_id,
bagelfilling.item_id,
Item.price,
bagelfilling.price,
order_detail.quantity,
order_detail.discount,
drink_sizes.price,
drink.item_id)
WHEN (order_detail.item_id = item.item_id) AND (item.item_ID = bagel.item_id) AND (bagel.item_id = bagelfilling.item_id)
THEN ((Item.price + bagelfilling.price)*order_detail.quantity)-order_detail.discount
WHEN (order_detail.item_id = item.item_id) AND (item.item_ID = drink.item_id)
THEN ((Item.price + drink_sizes.price)*order_detail.quantity)-order_detail.discount
WHEN (order_detail.item_id = item.item_id) AND (item.item_ID = bagel.item_id)
THEN (Item.price*order_detail.quantity)-order_detail.discount
WHEN (order_detail.item_id = item.item_id) AND (item.item_ID = drink.item_id)
THEN (Item.price*order_detail.quantity)-order_detail.discount
else 0.00
end)
我一直运行到这个错误:
Error Code: 1241. Operand should contain 1 column(s).
我该如何解决这个问题?我需要在创建表格或添加数据时计算价格。
答
您不能在计算字段的表达式中引用来自其他表的字段,因为不允许子查询。所以,即使我们为你解决了语法错误,它也不会起作用。该任务似乎需要触发器,存储过程或视图。
即使您可以在case关键字后面有一个表达式,列名列名也不是有效的表达式,因为它不返回单个值。
我明白了。那么你如何制定这个程序 – Tochi
1.这是一个不同的问题,所以请在自己的帖子中提出。 2.提供更多关于你想要达到什么的细节,以及你如何在新文章中试图解决它。因为基于上述,即使我想,我也不能回答你的新问题。 – Shadow