앞선 13,14,15 주차 내용은 패스한다.
왜냐하면, 계열사들이 데이터를 제 시간에 주지않아 12개의 계열사에게 데이터를 받는 것에 집중하였고,
거기에 맞춰서 요구사항 정의서 및 테이블 정의서를 지속적으로 수정하며
모든 계열사들의 데이터들이 딱 떨어져맞는 코드를 계속해 수정해 나아가는 작업들을 해왔기 때문에
계속해서 작성하는 내용과 동일해 적지않았다.
이번16주차때는 드디어 "조.직.도" 제일 어려운것이 남았다.

위 그림과 같이 계층 구조를 이루고 있는 테이블 이기 때문에,
규칙을 정해 단순하게 코드 하나만 바꿔도 검색 할 수 있도록 하였다.
- 최상위 코드는 '000000' 으로 고정
- 최상위 코드는 무조건 '각 계열사 이름으로'
이렇게 정한뒤,
원천을 적재할 수 있는 테이블 -> 조직도 가공 테이블
이 순서대로 데이터가 들어갈 수 있도록 설계하고
원천에서 규칙을 적용하기 위해 가공 작업을 진행했다.
이렇게 작업하고 나면 계층형 쿼리 를 이용하여 확인하면된다.
계층형 쿼리는 부모-자식 관계를 가지는 데이터를 조회할 때 사용되는 SQL 기법
주로 조직도, 카테고리, 제품 분류, 댓글 구조 등의 트리(Tree) 구조를 표현할 때 활용됨
SELECT LPAD(' ', LEVEL * 2) || NAME AS INDENTED_NAME, -- 계단 형식 들여쓰기
ID,
PARENT_ID,
LEVEL -- 계층 레벨 표시
FROM your_table
START WITH PARENT_ID IS NULL -- 최상위 루트 노드 지정
CONNECT BY PRIOR ID = PARENT_ID -- 부모-자식 관계 설정
ORDER SIBLINGS BY ID;
LPAD(' ', LEVEL * 2) || NAME AS INDENTED_NAME
LEVEL 컬럼 포함
ORDER SIBLINGS BY
START WITH PARENT_ID IS NULL
CONNECT BY PRIOR ID = PARENT_ID
