我有一个库存表,其中包含各种商品,例如“牛奶”,“苹果咖啡”,“茶叶”等。这些物品具有数量值。 我的第二个表是orderedItem表。此表包含某些订单,例如Apple' x2,' apple' x3,' milk' x5。
我的查询必须从orderedItem表中选择某些订单行(在我的示例中是一个包含一定数量的' apples' 的订单),获取该订单的数量,并在库存表中的相应行/值中添加/减去该数量。
我如何修复这个SQL查询 - 我认为代码中写的代码是数量FROM orderedItem WHERE productname =' apple''可能会被打破:
query = mysql_query ("
UPDATE inventory iv
SET quantity = quantity - (quantity FROM orderedItem WHERE productname='apple')
WHERE iv.productname = 'apple' ");
答案 0 :(得分:1)
您可以嵌套选择:
UPDATE inventory iv
SET quantity = quantity - (select quantity FROM orderedItem WHERE productname ='apple')
WHERE iv.productname = 'apple' ;
如果多个行匹配条件(或者即使没有),这将不起作用。所以,你可能想要:
UPDATE inventory iv
SET quantity = quantity - coalesce((select sum(oi.quantity)
from orderedItem oi
where productname = oi.productname
), 0)
WHERE iv.productname = 'apple' ;