2013-10-18 2 views
0

내가 MS-Access에서 다음 쿼리 2010를 실행하려고 할 때이 절 대화 상자에서 구문 오류가 점점 오전에 조인 대화 상자에서 액세스 FROM Contact_addresses 다음에 (FROM Contact_addresses 이후에) 강조 표시됩니다.구문 오류는 MS 액세스

Access에서 여러 개의 중첩 된 조인이 필요하다는 것을 알고 있지만 누군가가 어떻게 작동하는지 개념을 설명 할 수 있습니까? 문제는 무엇입니까?

관련 부분 기본 테이블의 스키마는 SQL SELECT 문에서 명확해야합니다.

+2

, 각 하위의 테이블 별칭을 가져야한다 즉,'(Select ...) As X 왼쪽 조인 (Select ...) AS Y' – Kaf

+0

당신의 대괄호는 약간 엉성해야합니다 : (table or query) from left join (table or qry) on col = col. from contact_addresses와 왼쪽 조인 사이의 괄호 세트는 거기에 있어서는 안됩니다 (테이블 별칭 주석 aboe에도주의해야합니다.) – Twelfth

답변

1

나는 이것이 작동해야한다고 생각하지만 테스트에 대한 액세스가 부족합니다.

FROM Contact_addresses 

    LEFT JOIN 
     (SELECT 
      Owner_Operator.CONTACT_ID, 
      Owner_Operator.FIRM_NAME 
      FROM Owner_Operator) Owner_Operator 
     ON Contact_addresses.ContactID=Owner_Operator.CONTACT_ID 

    LEFT JOIN 
     (SELECT 
      Official_Correspondent.CONTACT_ID, 
      Official_Correspondent.FIRST_NAME, 
      Official_Correspondent.LAST_NAME, 
      Official_Correspondent.SUBACCOUNT_COMPANY_NAME, 
      Official_Correspondent.PHONE_NUMBER 
      FROM Official_Correspondent) Official_Correspondent 
     ON Contact_addresses.ContactID=Official_Correspondent.CONTACT_ID 
    ; 

: 테이블 는 = alias.col 가입 왼쪽 table.col에 가입 (문) 별명 를 왼쪽에서 일반 구문은

이에 문을 변경하면 ...

까지 보유 할 테이블 별칭을 조인에서 호출 한 것과 일치하도록 추가 했으므로 불쾌한 대괄호를 제거했습니다. .

+0

+1 도와 주려고 고맙습니다. 귀하의 변경 사항과 지금 던지고있다 "구문 오류 (누락 된 연산자) 쿼리 식 'Contact_addresses.ContactID = Owner_Operator.CONTACT_ID ... (쿼리의 끝까지)' ". 더 이상 아이디어가 없습니까? – CodeMed

+0

문제가 해결되었습니다. 방금 당신과 함께 올린 답을보십시오. 다시 감사합니다. – CodeMed

0

문제는 여는 괄호 ((그들은에서 첫 번째 후 즉시 할 필요의 위치에 있었다 여기에 작동하는 무슨이다. 일반적으로

SELECT Contact_addresses.AddressID, Contact_addresses.ContactID, Contact_addresses.Address1, Contact_addresses.Address2, Contact_addresses.City, Contact_addresses.State, Contact_addresses.Zip, Owner_Operator.FIRM_NAME, Official_Correspondent.FIRST_NAME, Official_Correspondent.LAST_NAME, Official_Correspondent.SUBACCOUNT_COMPANY_NAME, Official_Correspondent.PHONE_NUMBER 
FROM ((Contact_addresses 

     LEFT JOIN 
      (SELECT 
       Owner_Operator.CONTACT_ID, 
       Owner_Operator.FIRM_NAME 
       FROM Owner_Operator) AS Owner_Operator 
      ON Contact_addresses.ContactID=Owner_Operator.CONTACT_ID 
) 
     LEFT JOIN 
      (SELECT 
       Official_Correspondent.CONTACT_ID, 
       Official_Correspondent.FIRST_NAME, 
       Official_Correspondent.LAST_NAME, 
       Official_Correspondent.SUBACCOUNT_COMPANY_NAME, 
       Official_Correspondent.PHONE_NUMBER 
       FROM Official_Correspondent) AS Official_Correspondent 
      ON Contact_addresses.ContactID=Official_Correspondent.CONTACT_ID 
)   
; 
+0

좋은 해결 방법 ... 액세스는 SQL의 느슨한 구현이며 매우 독특한 SQL 구문에 의존합니다. – Twelfth