我需要根据这些条件更新UnitinStock
和Shipped Date
产品。
Shipped date is null
和Quantity < Unit in stock
时。但是我的查询正在更新Shipped date
处的订单Shipped date is null
,但不满足Quantity < Unit in stock
。就像这样,即使Quantity > Unit in stock
我如何满足这两个条件并更新列:
update products,orderdetails,orders
set
products.UnitsInStock = (products.UnitsInStock - orderdetails.Quantity),
ShippedDate = current_date()
where
products.ProductID = orderdetails .ProductID
and orders.OrderID = orderdetails.OrderID
and (ShippedDate is null and orderdetails.Quantity < UnitsInStock)
and orders.OrderID = 11039
答案 0 :(得分:0)
我认为您的逻辑还可以。我不太了解数据模型-例如,为什么ShippedDate
中的products
而不是orderdetails
中的数据模型。但是,这就是查询所指定的。
我注意到您不需要orders
表进行查询。这样就可以简化查询。您还可以使用显式join
和表别名,这样更易读:
update products p join
orderdetails od
on p.ProductID = od.ProductID
set p.UnitsInStock = (p.UnitsInStock - od.Quantity),
p.ShippedDate = current_date()
where p.ShippedDate is null and
od.Quantity < p.UnitsInStock and
od.OrderID = 11039;