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

다음은 상사와 그의 부하 직원을 출력하되, 출생연도가 앞서는 사람부터 출력하는 예제이다.

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

-- 부모 노드와 그에 따르는 자식 노드를 출력하되, 같은 레벨의 형제 노드 간에는 birthyear 순서로 정렬하기

SELECT id, mgrid, name, birthyear, level

FROM tree

START WITH mgrid IS NULL

CONNECT BY PRIOR id=mgrid

ORDER SIBLINGS BY birthyear;

 

id        mgrid  name                    birthyear        level

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

2         NULL  'Moy'                        1958            1

6            2  'Foster'                     1972            2

7            6  'Brown'                      1981            3

5            2  'Verma'                      1973            2

1         NULL  'Kim'                        1963            1

4            1  'Smith'                      1974            2

3            1  'Jonas'                      1976            2

예제 2

다음은 상사와 그의 부하 직원을 출력하되, 같은 레벨 간에는 우선 입사한 순서로 정렬시키는 예제이다. id는 입사한 순서로 부여된다. id는 직원의 입사번호이며, mgrid는 상사의 입사번호이다.

-- 부모 노드와 그에 따르는 자식 노드를 출력하되, 같은 레벨의 자식 노드 간에는 id 순서로 정렬하기

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