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;
[결과데이터]
'프로그래밍&IT > Oracle' 카테고리의 다른 글
[Oracle] 프로시저(Procedure) 생성 및 실행하기 (0) | 2021.08.07 |
---|---|
[Oracle] 뷰(View) 생성/수정/삭제 (0) | 2021.07.27 |
[Oracle] 계층형 질의 (0) | 2021.07.27 |
[Oracle] 외래키 수정/삭제 하기 (0) | 2021.07.20 |
[Oracle] 트리거(Trigger) (0) | 2021.07.16 |