더북(TheBook)

그럼 쿼리를 살펴보죠. 코드 11-9는 다음처럼 크게 세 부분으로 나눌 수 있습니다.

① 초기 쿼리

SELECT 1 level, employee_id, emp_name, CAST(employee_id AS CHAR(200)) path
  FROM emp_hierarchy
 WHERE manager_id IS NULL

서브쿼리 안의 첫 번째 문장은 반복 순환의 시작을 의미하죠. emp_hierarchy 테이블에서 최상위 관리자부터 계층별로 풀어 나가야 하므로 가장 상위에 있는 사원인 100번 Steven King을 조회하기 위해 manager_id 칼럼의 값이 NULL인 조건을 WHERE 절에 기술합니다.

그리고 SELECT 절에 사번, 사원명, 칼럼과 함께 1 level을 명시합니다. 이는 쿼리 수행 결과가 칼럼처럼 보이는 가상 칼럼으로, 최상위 사원을 의미하는 1에 별칭으로 level을 붙인 표현식입니다. 마지막으로 path 가상 칼럼은 계층 정보의 경로를 의미하는데, 사번을 기준으로 경로를 파악하기 위해 employee_id를 명시합니다. 여기서는 CAST() 함수를 써서 CHAR(200) 자리로 만듭니다. 하위 사원은 100, 101, 108, 110처럼 경로가 콤마로 구분되어 레벨이 낮아질수록 반환값이 늘어나므로 넉넉하게 만듭니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.