我试图添加一个名为“' price'到我的order_details表。我希望它能从其他表中的不同产品价格中计算出价格。
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)
我一直遇到这个错误:
错误代码:1241。操作数应包含1列。
如何解决此问题?我需要在创建表格或添加数据时计算价格。
答案 0 :(得分:1)
由于不允许子查询,因此无法在计算字段的表达式中引用其他表中的字段。因此,即使我们为您修复了语法错误,它也行不通。此任务似乎需要触发器,存储过程或视图。
即使您可以在case关键字后面加上一个表达式,列出的列名也不是有效的表达式,因为它不会返回单个值。