Database/ORACLE
START WITH ~ CONNECT BY PRIOR 구문(계층 구조)
준콩이
2013. 1. 31. 15:06
반응형
계층쿼리 START WITH ~ CONNECT BY PRIOR 구문
답변형 게시판이나, 계층적 트리구조를 사용하는 프로세스에서
START WITH CONNECT BY 구분을 많이 사용합니다.
START WITH
*. START WITH 구분 다음에는 계층관계를 검색하기 위한 조건이 위치합니다.
*. 시작할 루트(ROOT)를 지정합니다해줍니다.
*. 서브쿼리(SUB QUERY) 형태도 가능합니다.
CONNECT BY PRIOR
*. CONNECT BY 절 다음에는 계층 구조에서 부모와 자식간의 관계를 명시합니다.
*. PRIOR를 사용하여 부모 컬럼을 판별할 수 있고 PRIOR에 의해
상위계층인지 하위계층인지 판별할 수 있습니다.
*. 이 구문에서는 서브쿼리(SUB QUERY) 형태는 사용할 수 없습니다.
※ 참고로 데이터량이 많을 경우 성능적인 부분을 위해
아래의 계층구조 쿼리에서 START WITH절과 CONNECT BY 절의 컬럼(MEM_SEQ)에
인덱스(INDEX)가 걸려 있어야합니다.
START WITH MEM_SEQ IS NULL
CONNECT BY CUST_SEQ = MEM_SEQ
쿼리 사용 예제)
SELECT MEMBER_ID
FROM TABLE_A
WHERE DELYN = 'N'
START WITH MEMBER_ID = '6'
CONNECT BY PRIOR MEMBER_ID = COMPANY_ID
반응형