connectby (1)

💻 Programming/Oracle 11g

[SQL] CONNECT BY , START WITH

계층 구조를 가진 데이타를 뽑아보자!!!!

한 테이블 Table_1이 있다.

이 테이블은 objectID필드와 parentObjectID 필드를 갖고 있다.

두 필드에는 OBJECT_X(X는 정수형 숫자)형식의 데이터가 들어있다. 

또, OBJECT_1이 하위 OBJECT_2를 가지고 OBJECT_2가 또 하위 OBJECT_3을 가진다고 가정하자. (OBJECT_2는 OBJECT_1의 자식 OBJECT라고 생각하면된다.)

여러 다른 OBJECT_X 형식의 데이터들이 테이블 내에 많이 있다고 가정하자.

 

이때 CONNECT BY와 START WITH를 이용하여 OBJECT_2와 그 상위, 또 그 상위, 또 그 상위...쭈우욱 해서 OBJECT_2를 갖는 최상위 OBJECT까지 계층구조로 뽑아내기 위해서는 아래와 같이 하면 된다.

 

SELECT *

FROM Table_1

CONNECT BY PRIOR objectID = parentObjectID

START WITH objectID = 'OBJECT_2'

 

------- 

 파란색 조건부의 순서가 바뀌면 결과도 바뀌므로 주의하자.!!!!