왼쪽

2011-04-20 4 views
3

내가 액세스 데이터베이스에서 다음 쿼리 실행해야합니다 MS 액세스에 가입 함께 내부와 조인왼쪽

SELECT School.Name, Student.Name, Grade.Grade 
    FROM((`School` `School` LEFT JOIN `Student` `Student` ON `School`.`ID`=`Student`.`SchoolID`) INNER JOIN `Grade` `Grade` ON `Student`.`GradeID` = `Grade`.`ID`) 

이 나에게 오류 "표현 지원되지 참여"를 제공합니다,하지만 나는 왼쪽을 변경하는 경우 INNER JOIN에 가입하면 올바르게 실행됩니다. MS 액세스에서 두 조인을 함께 사용하는 방법은 다른 방식을 가질 수 있다고 생각합니다. 누구 pls 나 에게이 쿼리 및/또는 이유가 지원되지 않는 이유는 잘못 알려주 수 있습니다.

감사합니다.

답변

6

Access의 쿼리 디자이너에서 쿼리를 다시 작성했습니다. 쿼리는 두 조인 모두를 INNER로 사용했습니다. 그러나 쿼리 디자이너는 첫 번째 INNER JOIN을 LEFT JOIN으로 전환하려고 시도했을 때 "모호한 외부 조인"에 대해 불평했습니다. 두 조인의 LEFT는 모두 INNER와 마찬가지로 작동합니다.

첫 번째 조인에 LEFT가 필요하고 두 번째 조인에 INNER가 필요한 경우 두 번째 조인의 테이블을 하위 쿼리로 이동할 수 있습니다.

SELECT 
    School.[Name] AS school_name, 
    sub.[Name] AS student_name, 
    sub.Grade 
FROM 
    School LEFT JOIN (
     SELECT 
      Student.SchoolID, 
      Student.[Name], 
      Grade.Grade 
     FROM 
      Student INNER JOIN Grade 
      ON Student.GradeID = Grade.ID) AS sub 
    ON School.ID = sub.SchoolID; 
+0

감사합니다. 잘 작동한다!!! –

0

발신 및 결합 구문이 잘못되었습니다.

SELECT School.Name, Student.Name, Grade.Grade 
FROM Grade 
left join Student on ... 
left join School on ... 

어디 "..." "> < 기본 키> = < 외래 키"입니다.

+0

에 가입하는 방법 내부 조인 사용하여 사용할 수 없습니다 ??? 어떤 생각 pls ??? –

+0

각 테이블의 열 이름을 모르지만 다음과 같이됩니다. left join Student.ID = Grade.StudentID left join School.ID = Student.SchoolID –

2

Student. GradeID은 학생에게 LEFT JOIN을 수행했기 때문에 null 일 수 있습니다. 두 번째 참여를 위해 존재하지 않을 수도 있습니다. 당신은 좌 가입 할 때마다

그래서 기본적으로, 당신은 미래에 그 테이블의 모든 열은 다음