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;

 

[결과데이터]

 

+ Recent posts