기술

[Oracle/Tibero] 오라클 / 티베로 계층형 구조 데이타 쿼리 컨넥트(START WITH ...CONNECT BY PRIOR)

또리줌마 2022. 11. 3. 23:46
반응형

계층형 구조 데이터는 보통 조직이나 지역 등.. 한 테이블에 계층형(레벨) 구조로 데이터를 관리를 많이 합니다.

예를 들면 아래 예시와 같이 지역정보가 한개의 테이블로 마스터를 관리할 경우.

* 지역 마스터 테이블
- 지역코드 / 지역명 / 상위지역코드 / 레벨

지역 정보가 한 테이블에 계층형으로 존재할때 START WITH.. CONNECT BY 문을 이용하여 편리하게 하위 리스트 가지고 올 수 있습니다.

* 지역샘플데이타
SELECT * FROM Z_AERA


샘플 데이타


테스트 1)
서울시(A01) 내에 속한 지역 조회


SELECT * FROM Z_AERA
WHERE 1=1
START WITH ARE_CD = 'A01'
CONNECT BY PRIOR ARE_CD = UP_ARE_CD

조회결과


테스트 2)
강원도(A03) 내에 속한 지역 조회


SELECT * FROM Z_AERA
WHERE 1=1
START WITH ARE_CD = 'A03'
CONNECT BY PRIOR ARE_CD = UP_ARE_CD

조회결과



테스트 3)
전제 지역으로 조회할 때

SELECT * FROM Z_AERA
WHERE 1=1
START WITH ARE_CD ='ALL'
CONNECT BY PRIOR ARE_CD = UP_ARE_CD


보통 이러한 쿼리는 조회 조건이 다양한 레벨의 조회 조건일 때 사용을 많이 합니다.
즉. 강원도로 조회할 수 있고, 또는 하위 레벨인 동해시로 조회 할 때 해당 지역 내의 모든 지역별 매출을 분석할 때 유용하게 사용됩니다.

어떤 레벨(상위 레벨/ 하위 레벨)로 조회했는지 신경 쓸 필요가 없는 거죠^^

간단하지만 가끔 문법이 생각나지 않을 때가 있어서 적어 봅니다.