SQL에서 Self join이 무엇이며 왜 사용하나요?

Self join이란 테이블을 자기 자신과 조인시키는 것입니다. Self join이라는 명령어가 따로 있는 것은 아니고, outer join이던 inner join이던 자기 자신과 조인할 경우는 self join이 됩니다. 

self join은 주로 테이블에 Hierarchical structure가 있을 때 flat structure로 바꾸는 역할을 해줍니다. 예를 들어 설명하자면, employee 들의 정보가 담긴 테이블이 아래처럼 있다고 합시다. 

Image

 

위 테이블을 보면 김수현과 이민호가 다 저에게 보고를 하게 됩니다. 이 때 김수현과 이민호의 상사 이름을 같은 행에 출력하고 싶을 때 self join을 쓰면 되겠죠. 

그럼 쿼리는 다음과 같이 될 겁니다. 같은 테이블이지만 e, e2 라는 두 개의 view(복사본 같은 거라고 생각하시면 됩니다) 를 만들어서 조인 시키면 됩니다.

 

SELECT e.EmployeeID, e.FirstName, e.LastName, e.ManagerID, e2.FirstName as Manager First Name, e2.LastName as Manager Last Name

FROM Employee e

          LEFT OUTER JOIN Employee e2 ON e.ManagerID = e2.EmployeeID

 

Image

 

LEFT OUTER JOIN을 쓴 이유는 상사가 없는 employee도 결과에 나오게 하려고 한 것입니다. 상사가 있는 사람만 나오게 하려면 INNER JOIN을 쓰면 되겠습니다. 

 

 

댓글 남기기