我尝试进行UPDATE查询(使用Access 2013),该查询根据存储在两个单独的链接表中的值计算值。以下是我使用的代码:
UPDATE tblCreatures
INNER JOIN tblRole ON tblCreatures.Role = tblRole.RoleName
INNER JOIN tblRank ON tblCreatures.Rank = tblRank.RankName
SET tblCreatures.HP = ((tblRole.Level_0_HP + (tblCreatures.NominalLevel * tblRole.BonusHP)) * tblRank.HP_Multiplier);
这给我一个语法错误,说
Syntax error (missing operator) in query expression "tblCreatures.Role = tblRole.RoleName INNER JOIN tblRank ON tblCreatures.Rank = tblRank.RankNam"
(是的,它在RankNam中断,而不是RankName)
测试一下,如果我删除其中一个内连接(以及所有对该表的引用),那么更新查询就可以了,但如果我把另一个内连接重新放入,我会不断得到同样的语法错误。我不明白为什么......我应该能够把两个内连接放在一起,不应该吗?
答案 0 :(得分:3)
当查询包含多个JOIN时,Access SQL需要括号。如果您在Access的查询设计器中构建查询,它将如下所示(为清晰起见重新格式化):
UPDATE
(
tblCreatures
INNER JOIN
tblRole
ON tblCreatures.Role = tblRole.RoleName
)
INNER JOIN
tblRank
ON tblCreatures.Rank = tblRank.RankName
SET tblCreatures.HP = ((tblRole.Level_0_HP + (tblCreatures.NominalLevel * tblRole.BonusHP)) * tblRank.HP_Multiplier);