我正在尝试更新数据库中单个物料的数量,但是查询正在更新“数量”列中的所有值。
如何解决?
这是我的查询:
UPDATE Stocks
SET Stocks.Quantity = Stocks.Quantity - PointofSale.Quantity
FROM PointofSale
WHERE ItemID IN (SELECT ItemID FROM Recipe
WHERE MenuID IN (SELECT MenuID FROM Menu
WHERE ItemName IN (SELECT Product FRPOM PointofSale
WHERE POSID > 0)))
下面是我的表和数据库布局的屏幕截图。
这是我的Stocks
表:
这是将在我的更新查询中调用的ID:
这是我的菜单,其中包含所有产品:
这是我的POS,具有数量列:
答案 0 :(得分:2)
(评论太久了)
@Alex回答中的一段代码,上面有我的注释注释:
UPDATE s SET
Quantity = Quantity - POS.Quantity
FROM Stocks s
INNER JOIN PointofSale AS POS
ON ???
INNER JOIN Menu AS M
ON M.ItemName = POS.Product
INNER JOIN Recipe AS R
ON R.MenuID = M.MenuID
WHERE POS.POSID > 0
Stocks
应该如何连接到这些表中的任何一个?那就是你麻烦的原因。 Stocks
中的每一行都“匹配”其他表中的所有行,因为实际上没有匹配条件。这种情况称为MISSING JOIN PREDICATE
。
答案 1 :(得分:1)
尝试此请求:
...