본문 바로가기
Database/Oracle

ORACLE SQL SELF JOIN

by oncerun 2020. 4. 15.
반응형

SELF JOIN

 

셀프 조인이란 자신 테이블 안에서 데이터가 서로 포함 관계를 가지는 경우에 사용한다

 

JOIN은 서로 다른 테이블을 합치는 것이지만 SELF조인은 자신과 자신을 합쳐 사용합니다.

왜 자신을 합쳐서 사용하게 될까요?

 

예를 들면  회사에 회사원들이 있고 회사원들 또한 직급이 존재합니다

팀장의 부서원들로 팀원들이 존재하며 팀원을 은 부서장인 팀장이 필요해 

서로서로 데이터를 참조해야 할 경우 사용할 수 있습니다.

 

즉 테이블 안에서 데이터의 관계를 풀어낼 때 사용합니다.

 

 

MEMBER TABLE

이름

ID

사원번호

부서장_ID

홍길동

DEP_3

123

DEP_1

유재석

DEP_2

124

DEP_1

김두한

DEP_4

125

DEP_2

손오공

DEP_1

126

NULL

 

억지스럽지만 회사원들의 테이블에서 부서장의 이름을 같이 조회하고 싶다고 한다면 자신 테이블을 참조할 수 있습니다.

 

먼저 암시적인 JOIN을 해보게 된다면 관계가 없는 회사원들은 빠지게 될 것입니다.

SELECT M.* , B.NAME 부서장_NAME

FROM MEMBER M JOIN MEMBER B

ON M.ID = B. 부서장_ID;

 

 

이름

ID

사원번호

부서장_ID

부서장_NAME

홍길동

DEP_3

123

DEP_1

손오공

유재석

DEP_2

124

DEP_1

손오공

김두한

DEP_4

125

DEP_2

유재석

 

 

 

       

 

주인공은 MEMBER의 모든 회사원을 가져오되 부서장이 없는 경우도 NULL값으로 출력을 해야 더 보기 좋을 것 같습니다.

SELECT M.* , B.NAME 부서장_NAME

FROM MEMBER M LEFT OUTER JOIN MEMBER B

ON M.ID = B. 부서장_ID;

이름

ID

사원번호

부서장_ID

부서장_NAME

홍길동

DEP_3

123

DEP_1

손오공

유재석

DEP_2

124

DEP_1

손오공

김두한

DEP_4

125

DEP_2

유재석

손오공

DEP_1

126

NULL

NULL

 

만약 우리가 댓글에 다시 댓글이 달렸을 때 카테고리가 카테고리를 참조할 때 사용되기도 합니다.

반응형

'Database > Oracle' 카테고리의 다른 글

ORACLE SQL 숫자함수  (0) 2020.04.16
ORACLE SQL 문자열 내장 함수 (2)  (0) 2020.04.15
ORACLE SQL 문자열 내장 함수 (1)  (0) 2020.04.15
ORACLE SQL JOIN  (0) 2020.04.14
Oracle SQL 정규표현  (0) 2020.04.13

댓글