프로그래밍&IT/Oracle
[Oracle] 셀프조인(SELF JOIN)
sjoo
2021. 7. 27. 20:32
SELF JOIN이란?
- 동일 테이블 사이의 조인으로 FROM 절에 동일 테이블이 두 번 이상 나타난다.
- 동일 테이블 식별을 위해 반드시 별칭(alias)을 사용해야 한다.
사용법
SELECT ALIAS명1.컬럼명
, ALIAS명2.컬럼명
FROM 테이블1 ALIAS명1, 테이블2 ALIAS명2
WEHRE ALIAS명1.컬럼명2 = ALIAS명2.컬럼명1;
동일한 테이블에서 사용자를 담당하는 관리자명 정보를 보려고 한다.
먼저 테이블을 생성하고 데이터를 넣어준다.
* 테이블생성
CREATE TABLE TB_TEST(
ID VARCHAR2(10) PRIMARY KEY,
NAME VARCHAR2(20),
AMT NUMBER,
MANAGER_ID VARCHAR2(10)
);
* 데이터 입력
INSERT INTO TB_TEST VALUES('USER1','유저1',300,'MANAGER1');
INSERT INTO TB_TEST VALUES('USER2','유저2',400,'MANAGER1');
INSERT INTO TB_TEST VALUES('USER3','유저3',200,'MANAGER1');
INSERT INTO TB_TEST VALUES('USER4','유저4',500,'MANAGER2');
INSERT INTO TB_TEST VALUES('MANAGER1','관리자1',NULL,NULL);
INSERT INTO TB_TEST VALUES('MANAGER2','관리자2',NULL,NULL);
다음으로, 사용자를 담당하는 관리자명 정보를 출력하려 한다.
SELECT A.ID,
A.NAME,
A.AMT,
B.ID AS MANAGER_ID,
B.NAME AS MANAGER_NAME
FROM TB_TEST A JOIN TB_TEST B
ON A.MANAGER_ID=B.ID
ORDER BY ID;
[결과데이터]