2009-04-27 6 views
8

TSQL (MS SQL Server 2000 및 2005에서 사용됨)은 여러 개의 JOIN 절을 하나씩 사용할 수 있으며 쉼표 또는 괄호는 필요 없습니다. Access에서 이것을 시도하면 적합 여부가 다음과 같이 나타납니다. "쿼리 오류에서 구문 오류 (누락 된 연산자) ..."TSQL을 MS 액세스 SQL로 변환

Google에서 수집 할 수 있었던 Access SQL은 괄호로 그룹화했습니다. JOIN 조항. 이를 수행하는 방법에 대한 대부분의 조언은 디자인보기 또는 쿼리 마법사를 사용하고 Access에서 표준 SQL에 필요하지 않은 괄호를 넣을 위치를 파악하도록합니다. 문제는, 필자는 텍스트 편집기 (메모장, SSMS, VS2005 등)에서 SQL을 사용하여 디자인보기와 마법사가 방해 받고 내 피부를 크롤링하는 데 익숙합니다. 때로는 마법사가 여러 가지 가능성이있는 경우 참여할 대상에 대한 잘못된 가정을하기도합니다. TSQL에서 직접 마법사를 사용하여 마법사를 사용하지 않으려 고합니다.

TSQL을 Access SQL로 변환하는 도구 또는 최소한 괄호를 넣을 위치에 대한 규칙 집합이 있습니까?

예 :

SELECT ... 
FROM Participant PAR 
    INNER JOIN Individual IND 
     ON PAR.APETSID = IND.APETSID 
    INNER JOIN Ethnicity ETH 
     ON IND.EthnicityID = ETH.ID 
    INNER JOIN Education EDU 
     ON IND.EducationID = EDU.ID 
    INNER JOIN Marital MAR 
     ON IND.Marital = MAR.ID 
    INNER JOIN Participant-Probation PXP 
     ON PAR.ID = PXP.ParticipantID 
    INNER JOIN Probation PBN 
     ON PXP.ProbationID = PBN.ID 
    INNER JOIN Class-Participant CXP 
     ON PAR.ID = CXP.ParticipantID 
    INNER JOIN Class CLS 
     ON CXP.ClassID = CLS.ID 
    INNER JOIN Official OFR 
     ON PAR.ReferringPO = OFR.ID 
    INNER JOIN Participant-Official PXO 
     ON PAR.ID = PXO.ParticipantID 
    INNER JOIN Official OFA 
     ON PXO.OfficialID = OFA.ID 
+0

SQL Server 호환 구문 (ANSI 92)을 사용하면 도움이되지 않습니다. – JeffO

답변

2

야아는 MS-액세스 벙어리이다.

MS-SQL/TSQL에서 MS-Access로 이동하는 데 큰 시장이 아닐 수도 있습니다. 일반적으로 나는 디자인 뷰를 사용하는데 이는 내가 아는 한 마법사가 아니다. 그런 다음 수동으로 테이블을 추가 한 다음 적절한 관계 다이어그램을 만들지 않았거나 약간 펑키 한 경우 Designer에서 수동으로 관계를 만듭니다. 그런 다음 SQL 조회에서 조회를 점검하고 필요에 따라 정정합니다.

예제의 경우 (사용자가 지정한대로) 괄호가 필요할 수 있으므로 수동으로 추가해야합니다. 당신은 아마 이런 식으로 뭔가를 원하는 :

SELECT ... 
FROM (((Participant PAR 
    INNER JOIN Individual IND 
     ON PAR.APETSID = IND.APETSID) 
    INNER JOIN Ethnicity ETH 
     ON IND.EthnicityID = ETH.ID) 
    INNER JOIN Education EDU 
     ON IND.EducationID = EDU.ID) 
    INNER JOIN Marital MAR 
     ON IND.Marital = MAR.ID 

(당신이 N 내부 조인이있는 경우, 당신은 처음부터 N-1 오픈 괄호를해야하고, 지금까지 조인의 끝에서 일 것이다 마지막 제외)

+0

감사합니다. 불행히도 이제 "FROM 절에 구문 오류"가 표시됩니다. 나는 디자이너에게 또 하나의 기회를 줄 것입니다. –

+0

와우 ... 나는 잘못된 괄호를 틀린 장소에 넣었다고 생각합니다. 내 예를 업데이트했습니다. – BIBD

+1

예! 감사!! 하이픈으로 연결된 테이블 이름을 대괄호로 묶는 것과 함께 그 것이었다. 나는 또한 나의 명명 규칙이 디자이너를 포기하고 있다는 것을 발견했다. (모든 테이블의 PK가 "ID"인 것을 좋아하지 않으므로 생성 된 조인에 너무 많은 절을 삽입했습니다) –

0

이것은 Access에서 작동합니다.

SELECT * 
FROM (((Individual AS IND 

INNER JOIN Ethnicity AS ETH 
    ON IND.EthnicityID = ETH.ID) 

INNER JOIN Education AS EDU 
    ON IND.EducationID = EDU.ID) 

INNER JOIN Marital AS MAR 
    ON IND.Marital = MAR.ID) 

INNER JOIN (((((((Participant AS PAR 

    INNER JOIN Official AS OFR 
     ON PAR.ReferringPO = OFR.ID) 

    INNER JOIN [Class-Participant] AS CXP 
     ON PAR.ID = CXP.ParticipantID) 

    INNER JOIN Class AS CLS 
     ON CXP.ClassID = CLS.ID) 

    INNER JOIN [Participant-Official] AS PXO 
     ON PAR.ID = PXO.ParticipantID) 

    INNER JOIN Official AS OFA 
     ON PXO.OfficialID = OFA.ID) 

    INNER JOIN [Participant-Probation] AS PXP 
     ON PAR.ID = PXP.ParticipantID) 

    INNER JOIN Probation AS PBN 
     ON PXP.ProbationID = PBN.ID) 

ON IND.APETSID = PAR.APETSID 

보시다시피, 결합 할 테이블은 함께 그룹화됩니다.