首先,我知道已经有关于它的问题和答案,这个线程是最接近我需要的线程:
但是,我收到了似乎在FROM
子句附近发生的语法错误(缺少运算符)。然而我看不到。它不喜欢FROM
自己吗?我不习惯FROM
在更新语句中使用,但从我刚刚链接的 QA 看来它是有效的:|
知道为什么会有语法错误吗?
我正在使用 Access 2007 SP3。
编辑:哇,我忘了发布查询...
UPDATE r
SET
r.tempsmoy_requete_min = tmm.moy_mob_requete
FROM
rapports AS r INNER JOIN
(SELECT
id_fichier,
Round(Sum(temps_requete_min)/3,0) As moy_mob_requete,
Round(Sum(temps_analyse_min)/3,0) As moy_mob_analyse,
Round(Sum(temps_maj_min)/3,0) As moy_mob_maj,
Round(Sum(temps_rap_min)/3,0) As moy_mob_rap,
Round(Sum(temps_ddc_min)/3,0) As moy_mob_ddc
FROM maintenances
WHERE
periode In (10,9,8) And
annee=2011
GROUP BY id_fichier) AS tmm ON rapports.id_rapport = tmm.id_fichier
WHERE
1=0
这WHERE 1=0
部分是因为我想在运行它之前进一步测试子查询。
编辑:这是我正在尝试的一些更简单的查询。这次我得到一个不同的错误。它现在告诉我 tempsmoy_requete_min (可能还有所有其他左操作数)不是聚合函数的一部分......这是我查询的重点。任何的想法 ?
UPDATE
rapports INNER JOIN maintenances ON rapports.id_rapport = maintenances.id_fichier
SET
rapports.tempsmoy_requete_min = Round(Sum(temps_requete_min)/3,0),
rapports.tempsmoy_analyse_min = Round(Sum(temps_analyse_min)/3,0),
rapports.tempsmoy_maj_min = Round(Sum(temps_maj_min)/3,0),
rapports.tempsmoy_rap_min = Round(Sum(temps_rap_min)/3,0),
rapports.tempsmoy_ddc_min = Round(Sum(temps_ddc_min)/3,0)
WHERE
maintenances.periode In (10,9,8) And
maintenances.annee=2011 AND
1=0