본문 바로가기




Future Items

오라클 계층형 쿼리 부모 찾기 방법

by 독서하는 AI 2023. 11. 2.
 
반응형

개요

계층형 데이터는 부모와 자식간의 관계로 이루어진 데이터 구조로서, 트리나 그래프 모양을 가진 데이터를 처리할 때 유용한 방법입니다. Oracle에서도 계층형 데이터를 쿼리하는 방법을 제공하고 있으며, 이 중에서 "부모 찾기" 쿼리에 대해 알아보겠습니다.

계층형 쿼리란?

계층형 쿼리(Hierarchical Query)는 Oracle Database에서 계층 구조로 구성된 데이터를 쿼리하는 방법을 제공합니다. 계층형 쿼리는 한 테이블 내의 데이터가 부모-자식 관계를 가지고 있거나 여러 테이블 간에 계층적인 구조로 표현된 데이터를 쿼리할 때 유용하게 사용됩니다.

 

계층형 쿼리는 CONNECT BY 절을 사용하여 부모-자식 관계를 표현합니다. CONNECT BY PRIOR 구문을 사용하여 자식과 부모를 연결하며, START WITH 구문을 사용하여 계층구조를 시작하는 지점을 지정합니다.

 

아래는 계층형 쿼리를 작성하는 법을 보여줍니다:

SELECT * FROM 테이블명 CONNECT BY PRIOR 자식컬럼 = 부모컬럼 START WITH 시작컬럼 = 지점값

자, 이제 계층형 쿼리를 이용하여 Oracle에서 특정 데이터의 부모를 찾아보겠습니다.

부모 찾기 쿼리 작성하기

우리는 계층형 데이터에서 특정 자식 데이터의 부모를 찾아내고자 합니다. 아래는 테이블 "employees"를 예로 들어 이해를 돕기 위한 예제입니다:

EMPLOYEE_ID EMPLOYEE_NAME SUPERVISOR_ID DEPARTMENT
1 John 4 IT
2 Jane 4 IT
3 Mike 5 HR
4 Adam 7 Finance
5 Sarah 7 Finance
6 Emily 7 Finance
7 Tom NULL Finance

위 테이블에서 우리는 각각의 직원들의 부모를 찾아내고자 합니다. 예를 들어, "John"의 부모는 "Adam"이며 "Mike"의 부모는 "Sarah"입니다. 이를 계층형 쿼리를 이용하여 조회해보겠습니다.

SELECT EMPLOYEE_NAME, CONNECT_BY_ROOT EMPLOYEE_NAME AS PARENT_NAME FROM employees CONNECT BY PRIOR EMPLOYEE_ID = SUPERVISOR_ID START WITH EMPLOYEE_NAME = 'John';

위 쿼리는 "John"을 시작으로 경로를 따라 올라가면서 부모를 찾아냅니다. CONNECT_BY_ROOT 구문을 이용하여 최상위 부모인 "Adam"을 찾을 수 있습니다.

 

결과는 다음과 같습니다:

EMPLOYEE_NAME PARENT_NAME
John Adam

다른 직원들에 대해서도 동일한 쿼리를 적용하면, 각각의 부모를 찾아낼 수 있습니다.

 

이제 계층형 쿼리를 이용하여 특정 데이터의 부모를 찾는 방법에 대해 알게 되었습니다. 이를 응용하여 복잡한 계층 구조에서 데이터를 조회하거나 분석하는 등 다양하게 활용할 수 있습니다.

 

부모 찾기 쿼리를 작성하는 방법에 대해 설명하였으며, 계층형 쿼리를 이용하여 데이터를 조회하기 위해서는 CONNECT BY 절과 START WITH 절을 사용하는 방법을 익히는 것이 필요합니다. 계층형 데이터를 적절하게 사용하면 복잡한 구조의 데이터를 효율적으로 관리하고 분석할 수 있습니다.

반응형