2013-09-10 2 views
0

나는 다음과 같은 테이블이 있습니다다중은 같은 테이블에 조인

표 : 교사 :

teacherID
TEACHERNAME

표 : 학생 :

때문에, 일반적으로, 나는 교사는 내부 조인 사용하는 이름으로, 학생 당 하나의 행을 얻을 수 있습니다 알고

advisorID


을 teacherID studentName

을 studentID.

이 경우 (권고 자와 tacher)는 동일한 교사 테이블에 있습니다. 그래서 어떻게 선생님 이름을 얻은 다음 선생님 이름을 얻기 위해 선생님 테이블에 두 번 가입 할 수 있습니까?

희망이 분명합니다.

감사합니다!

답변

4

(a) 교사 또는 (b) 고문이없는 학생의 알파 순서로 교사 및 고문의 이름이있는 학생을 나열합니다. 이러한 이름이있는 위치 만 원하면 각 조인을 INNER 조인으로 변경하십시오.

SELECT s.studentname as [Student], t.teachername as [Teacher], a.teachername as [Advisor] 
FROM Students s 
LEFT JOIN Teachers t ON s.TeacherID = t.TeacherID 
LEFT JOIN Teachers a ON s.AdvisorID = a.TeacherID 
ORDER BY 1, 2 
+0

놀라운 - 감사합니다 존, 너무 다른 사람 – kneidels

1

다음과 같이 해보십시오. SQL을 수행 한 이후로 오랜 시간이 걸려서 작동하지 않을 수 있습니다.

SELECT s.studentName AS Student, t.teacherName AS Teacher, a.teacherName AS Advisor 
FROM teachers t, teachers a, students s 
WHERE t.teacherID = s.teacherID AND a.teacherID = s.advisorID 
2

두 번 이상 같은 테이블에 참여할 수 있습니다. 각 조인마다 다른 별칭을 지정하고 필드 이름을 충분히 설명 할 수 있습니다. 링크가 없어도 왼쪽 조인을 사용하십시오. 그러나 학생이 항상 선생님과 고문을 둘 다 갖고 있다면 곧게 조인해야합니다.

이런 식으로 뭔가 :

select s.studentname student 
    , t.teachername teacher 
    , a.teachername advisor 
from students s 
join teacher t 
    on t.teacherID = s.teacherID 
join teacher a 
    on a.teacherID = s.teacherID 
관련 문제