계층쿼리 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

Posted by 준콩ol 준콩ol

댓글을 달아 주세요