访问查询:使用SET中的DSum更新

时间:2018-10-11 20:27:16

标签: sql ms-access

当我尝试运行此SQL代码时,出现错误“ 操作必须使用可更新的查询”:

UPDATE Progetti 
SET Progetti.Eroso = (SELECT sum(Fatture.Fattura) FROM Fatture WHERE Fatture.[Codice Progetto] = Progetti.[Codice Progetto]);

请考虑所涉及的所有表,字段和关系均已存在并已正确设置。问题(根据我的说法)是SELECT不能在SET内部。正确吗?

那么什么是正确的解决方案?

结果必须是:对于Progetti.[Codice Progetto]字段中的每个Progetti.Eroso,仅与Fatture.Fattura相关的Progetti.[Codice Progetto]之和。

替代方法可以是:

UPDATE Progetti AS a 
SET a.Eroso = DSum("Fattura", "Fatture", "[Codice Progetto]=" & a.[Codice Progetto]);

但是我得到这个警告:

enter image description here

编辑

我已经尝试过 @ user4321 的解决方案:

UPDATE Progetti 
SET Progetti.Eroso = Fatture2.FatturaSum 
FROM Progetti
Inner Join (SELECT sum(Fatture.Fattura) as FatturaSum
             FROM Fatture) as Fatture2  
ON Fatture2.[Codice Progetto] = Progetti.[Codice Progetto];

也许我已经找到了为什么它不起作用:Fatture.[Codice Progetto]可能链接到Progetti.[ID Progetto](与Progetti.[ID Progetto]不同)。该字段的设置方式如下:

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

希望这对您有用

UPDATE Progetti 
SET Progetti.Eroso = Fatture2.FatturaSum 
FROM Progetti
Inner Join (SELECT sum(Fatture.Fattura) as FatturaSum
             FROM Fatture) as Fatture2  
ON Fatture2.[Codice Progetto] = Progetti.[Codice Progetto];