Ошибка доступа к синтаксису SQL (отсутствует оператор), когда запрос содержит несколько JOIN
Я пытаюсь сделать запрос 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)
Тестирование: если я удаляю одно из внутренних объединений (и, следовательно, все ссылки на эту таблицу), тогда запрос на обновление работает нормально, но если я помещаю другое внутреннее объединение обратно, я постоянно получаю ту же самую синтаксическую ошибку. Я не понимаю, почему... Я должен быть в состоянии поместить два внутренних соединения рядом, не так ли?
1 ответ
Для доступа к SQL требуются скобки, если запрос содержит несколько JOIN. Если вы построите запрос в конструкторе запросов 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);