오라클 데이터베이스는 계층 구조 데이터를 쿼리하기 위한 CONNECT BY LEVEL 절을 제공합니다. CONNECT BY LEVEL 절은 계층 구조를 쿼리하기 위한 재귀적인 쿼리를 작성하는 데 사용됩니다.
이 절을 사용하면 계층 구조에 속한 모든 노드를 검색하거나, 특정 조건을 충족하는 노드를 찾을 수 있습니다.
CONNECT BY LEVEL 절의 구문
CONNECT BY LEVEL [condition]
CONNECT BY LEVEL 절은 한 테이블에서 계층 구조 정보를 검색하는 데 사용됩니다. 이 절은 일반적으로 WHERE 절과 함께 사용되며, WHERE 절은 계층 구조를 제한하는 추가적인 조건을 포함할 수 있습니다.
CONNECT BY LEVEL 절은 다음과 같은 구문을 사용하여 사용됩니다.
SELECT [columns] FROM [table] [WHERE condition] CONNECT BY LEVEL <= [level limit] [START WITH condition];
위의 구문에서 [columns]
는 결과에 반환할 열의 목록, [table]
은 계층 구조 정보가 저장된 테이블, [WHERE condition]
은 계층 구조를 제한하는 추가 조건, [level limit]
은 출력되는 노드의 최대 레벨, [START WITH condition]
은 계층 구조를 시작할 노드를 지정합니다.
CONNECT BY LEVEL 절의 예제
CONNECT BY LEVEL 절은 실제 예제를 통해 이해하기가 더 쉽습니다. 다음은 계층 구조 테이블 "employees"를 사용한 예제입니다.
EMPLOYEE_ID | EMPLOYEE_NAME | MANAGER_ID |
---|---|---|
1 | John | - |
2 | Jane | 1 |
3 | David | 2 |
4 | Michael | 2 |
5 | Hannah | 4 |
위의 테이블은 직원과 관리자 간의 계층 구조를 나타냅니다. John은 최상위 관리자이고, Jane은 John의 관리자입니다. David와 Michael은 Jane의 관리자이며, Hannah은 Michael의 관리자입니다.
SELECT LEVEL, EMPLOYEE_NAME, MANAGER_ID FROM employees CONNECT BY LEVEL <= 3 START WITH MANAGER_ID IS NULL;
위의 예제 쿼리는 LEVEL이 3 이하인 모든 직원과 관리자를 검색합니다. 결과는 다음과 같습니다.
LEVEL | EMPLOYEE_NAME | MANAGER_ID |
---|---|---|
1 | John | - |
2 | Jane | 1 |
2 | David | 2 |
2 | Michael | 2 |
3 | Hannah | 4 |
위의 예제에서는 LEVEL을 사용하여 출력되는 레벨을 제한했습니다. START WITH 절은 계층 구조의 시작 노드를 지정하며, MANAGER_ID가 NULL인 직원을 시작 노드로 지정했습니다.
CONNECT BY LEVEL은 계층 구조 데이터를 쿼리하는 데 유용한 오라클의 기능입니다. 이 문서에서는 CONNECT BY LEVEL의 기본 사용 방법과 예제를 제공했습니다. 이를 통해 오라클에서 계층 구조 데이터를 쿼리하는 데 도움이 되었기를 바랍니다.
'Future Items' 카테고리의 다른 글
오라클 연속된 날짜 구하는 방법 (0) | 2023.11.02 |
---|---|
오라클 CONNECT BY LEVEL을 활용한 날짜 조회 방법 (0) | 2023.11.02 |
오라클 계층형 쿼리 START WITH 구분 사용 방법 (0) | 2023.11.02 |
오라클 계층형 쿼리 최상위 찾는 방법 (0) | 2023.11.02 |
오라클 계층형 쿼리 부모 찾기 방법 (0) | 2023.11.02 |