2015-01-10 1 views
2

두 개의 개별 연결된 테이블에 저장된 값을 기반으로 값을 계산하는 UPDATE 쿼리 (Access 2013 사용)를 만들려고합니다.쿼리에 여러 개의 JOIN이 포함 된 경우 SQL 구문 오류 (누락 된 연산자)에 액세스

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); 
+0

감사합니다! 나는 괄호를 사용해 보았지만 괄호 안에 tblCreatures를 포함하지 않았습니다. 나는 그것이 왜 필요로하는지 의아해한다. 그러나 관계없이, 이것은 매력처럼 일했다. 나에게 Access 구문의 이상한 특이점을 밝혀 주셔서 감사합니다! –

관련 문제