Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 

계층 질의문에서의 데이터 정렬

설명

ORDER SIBLINGS BY 절은 계층 질의 결과 값들의 계층 정보를 유지하면서 특정 컬럼을 기준으로 오름차순 또는 내림차순으로 데이터를 정렬하며, 동일한 부모를 가진 자식 행들을 정렬할 수 있다.

계층적 질의문에서 데이터의 계층적 순서를 파악하기 위해 사용한다.

구문

ORDER SIBLINGS BY col_1 [ASC|DESC] [, col_2 [ASC|DESC] […[, col_n [ASC|DESC]]…]]

예제 1

R이라는 부모 행에 C1과 C2라는 자식 행들이 있다. C1은 C1_1, C1_2 및 C1_3이라는 자식 행을 가지며, C2는 C2_1, C2_2 및 C2_3의 자식 행을 가진다.

ORDER SIBLINGS BY 절을 명시하지 않고 데이터를 조회할 경우, 계층 질의에서는 아래와 같이 기본적으로 깊이 우선(depth-first) 순서에 따라 결과 데이터를 출력하고, 정렬을 수행하지 않는다.

ROWS

COLUMN VALUES

LEVEL

R(parent node)

A

Level 1

C1

B

Level 2

C1_1

G

Level 3

C1_2

F

Level 3

C1_3

H

Level 3

C2

D

Level 2

C2_1

C

Level 3

C2_2

E

Level 3

C2_3

I

Level 3

ORDER SIBLINGS BY 절을 이용하면 아래와 같이, 명시된 컬럼 리스트에 따라 데이터가 정렬되지만, 계층 관계를 파악하기 어렵다.

ROWS

COLUMN VALUES

LEVEL

R

A

Level 1

C1

B

Level 2

C2_1

C

Level 3

C2

D

Level 2

C2_2

E

Level 3

C1_2

F

Level 3

C1_1

G

Level 3

C1_3

H

Level 3

C2_3

I

Level 3

계층 질의 결과는 기본적으로 ORDER SIBLINGS BY 절에 명시된 컬럼 리스트를 따라 정렬된 부모와 그 부모의 자식 노드들이 연속적으로 출력되며, 동일 부모를 가지는 형제는 명시된 정렬 순서에 따라 정렬되어 출력된다.

예제 2

다음은 동일한 부모를 가지는 행들을 정렬시키는 예제이다.

-- 동일한 부모를 가지는 자식 노드들을 연속 출력하기

SELECT id, mgrid, name, LEVEL

    FROM tree

    START WITH mgrid IS NULL

    CONNECT BY PRIOR id=mgrid

    ORDER SIBLINGS BY id;

 

id  mgrid       name        level

===============================================

1   null        Kim     1

3   1       Jonas       2

4   1       Smith       2

2   null        Moy     1

5   2       Verma       2

6   2       Foster      2

7   6       Brown       3