【发布时间】:2016-02-01 08:14:33
【问题描述】:
我在 access 2007 中有 2 个表。 请参阅附图以查看表格的结构和预期结果。
我正在尝试通过汇总 TABLE_DTL 中相同项目 (LOITNBR=ITNBR) 的所有数量字段 (LOCQTY) 来更新 TABLE_BLNC 中的数量字段 (ITQTY)。 在 TABLE_BLNC 中,item 是唯一的,而在 TABLE_DTL 中,item 可以在多个记录中。
我的查询是:
UPDATE TABLE_BLNC INNER JOIN
(
SELECT LOITNBR, Sum(LOCQTY) AS SumOfLOCQTY FROM TABLE_DTL GROUP BY LOITNBR) AS DTL
ON TABLE_BLNC.ITNBR=DTL.LOITNBR SET TABLE_BLNC.ITQTY = DTL.SumOfLOCQTY;
我收到错误: 操作必须使用可更新的查询。
【问题讨论】:
-
那么,用文字(不是 SQL)来说,你想做什么?
-
在 T-SQL(Access、SQL 服务器等)中使用连接的更新语法错误 - 尝试查看这个答案,看看它是否有帮助 stackoverflow.com/questions/1293330/…
-
我会试试
UPDATE TABLE_BLNC SET ITQTY = (select sum(.... WHERE ... TABLE_BLNC.ITNBR=DTL.LOITNBR... -
UPDATE TABLE_BLNC SET ITQTY= (SELECT Sum(LOCQTY) AS SumOfLOCQTY FROM TABLE_DTL GROUP BY TABLE_DTL.LOITNBR WHERE TABLE_BLNC.ITNBR = TABLE_DTL.LOITNBR);是你的意思吗?我收到语法错误
-
必须
ITQTY是表中存在的字段吗?您可以在需要时使用这样的SELECT查询简单地推导出它吗?SELECT TABLE_BLNC.ITNBR, Nz(sub.SumOfLOCQTY, 0) AS [ITQTY] FROM TABLE_BLNC LEFT JOIN (SELECT LOITNBR, Sum(LOCQTY) AS SumOfLOCQTY FROM TABLE_DTL GROUP BY LOITNBR) AS sub ON TABLE_BLNC.ITNBR=sub.LOITNBR;
标签: sql ms-access join sql-update