访问:如何编写查询更新?

时间:2018-10-17 12:13:03

标签: ms-access

在我的表Progetti中,我需要使用查询Eroso更新字段Query2

要放在Progetti.Eroso上的值必须从查询[Fatture Query]的{​​{1}}中获取。

问题是我在[Fatture Query].[Codice Progetto] = Progetti.[Codice Progetto]中使用的SQL可能是错误的,因为我没有预期的结果:系统要求插入Query2[Fatture Query].Sum中的代码如下。

Query2

编辑

这是UPDATE Progetti SET Progetti.Eroso = [Fatture Query].Sum; 的SQL代码:

[Fatture Query]

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为问题在于更新查询未指定[Fatture Query]中的行与[Progretti]中的行如何匹配,因此系统不知道要看哪一行。尝试像这样使用WHERE子句:

    UPDATE Progetti SET Progetti.Eroso = [Fatture Query].Sum WHERE [Fatture Query].[Codice Progetto] = Progetti.[Codice Progetto];

答案 1 :(得分:1)

由于您的查询Fatture Query使用聚合函数(SUM),因此引用该查询的任何查询将不再可更新,因为一旦记录被建立,便存在固有的一对多关系。聚集。

这样,我相信您将需要使用诸如DSum之类的函数来为每个要更新的记录计算适当的值,例如:

UPDATE
    Progetti 
SET 
    Progetti.Eroso = DSUM("Fattura", "Fatture", "[Codice Progetto] = '" & [Codice Progetto] & "'")

如果相反,您从中查询值的查询未使用聚合函数(例如SUMMINMAX等),则我建议在您的INNER JOIN查询中加入一个UPDATE,以便用于更新目标字段的值来自您Fatture Query查询中的相应记录,例如:

UPDATE
    Progetti 
    INNER JOIN 
    [Fatture Query]
    ON
    Progetti.[Codice Progetto] = [Fatture Query].[Codice Progetto]
SET
    Progetti.Eroso = [Fatture Query].Sum