我希望能够选择并更新我当前的库存表
这是我的疑问:
UPDATE current_stock
SET current_stock.quantity =
(SELECT quantity
FROM (SELECT * FROM current_stock) As current_stock1
WHERE current_stock1.stock_id=2)
WHERE stock_id=1;
如果我在没有更新的情况下运行嵌套选择它可以正常工作,但是将它与update语句一起使用总是会返回错误:操作必须使用可更新查询
实际问题:
我想根据相应的笔记本电脑ID从表Bom_dell中扣除当前库存数量所需的数量字段
语法错误:(缺少运算符)在查询表达Dlookup ..
我猜测嵌套的Dlookup无法正常工作
UPDATE current_stock
SET current_stock.quantity =
DLookup("quantity", "current_stock", "stock_id=1")-DLookup("req_quantity","Bom_dell","lap_id=DLookup("lap_id","laptop_info","model_name="Dell Inspiron"")")
WHERE stock_id=1;
根据您的建议,我将代码更改为包含SELECT语句,并且可以正常工作:
UPDATE current_stock
SET current_stock.quantity =
DLookup("quantity", "current_stock", "stock_id=1")-DLookup("req_quantity","Bom_dell","lap_id=(SELECT lap_id FROM laptop_info WHERE model_name='Dell Inspiron')")
WHERE stock_id=1;
我现在需要做的就是添加一个for循环来扣除当前库存表中的所有数量
http://tinyurl.com/7eghddq<<这是我的关系表图像的链接
答案 0 :(得分:2)
Domain Aggregate Functions可用于避免“操作必须使用可更新查询”错误。
在您的情况下,您似乎想要将stock_id = 1的数量替换为stock_id = 2的数量。如果我理解正确,请尝试此UPDATE查询。
UPDATE current_stock
SET current_stock.quantity =
DLookup("quantity", "current_stock", "stock_id=2")
WHERE stock_id=1;
答案 1 :(得分:0)
如果按照此数据模型
按住笔记本电脑与表格相关的stockId
然后您可以使用以下SQL
更新它UPDATE (LaptopInfo INNER JOIN BomDell ON LaptopInfo.LaptopId = BomDell.LapTopId) INNER JOIN current_stock ON LaptopInfo.StockId = current_stock.StockId SET current_stock.Quantity = [Quantity]-[ReqQuantity] WHERE (((LaptopInfo.ModelName)="Dell Inspirion"));