DATA BASE/ORACLE

CONNECT BY~ ORDER SIBLINGS BY

skrr 2021. 11. 23. 17:58

Oracle에서는 계층형으로 SELECT 를 해오기 위해서 CONNECT BY 함수를 지원한다.

예를 들어 이러한 데이터가 있다는 가정

 

MENU_CD | PARENT_MENU_CD | SORT_SQNO

SALE000    |           0               |      1

EXCAL000  |           0               |      2

OPR000     |           0               |      3

EXCAL010  |       EXCAL000        |      10

SALE010    |        SALE000         |      10

OPR100     |        OPR000         |      10

OPR110     |        OPR000         |      20 

SALE020    |        SALE000         |      20

SALE030    |        SALE000         |      30

 

사용법은 다음과 같다.

START WITH PARENT_MENU_CD = '0' --대가리 조건
CONNECT BY PRIOR MENU_CD = PARENT_MENU_CD --대가리와 따까리 매핑
ORDER SIBLINGS BY SORT_SQNO --계층내에서 정렬

해당 계층 형으로 데이터는 아래와 같이 만들어진다.

 

SALE000    |           0               |      1

SALE010    |        SALE000         |      10

SALE020    |        SALE000         |      20

SALE030    |        SALE000         |      30

EXCAL000  |           0               |      2

EXCAL010  |       EXCAL000        |      10

OPR000     |           0               |      3

OPR100     |        OPR000         |      10

OPR110     |        OPR000         |      20