문제
다음 Oracle 계층형 질의에서 최상위 부서부터 하위 부서로 탐색하는 올바른 SQL은?
① SELECT * FROM 부서 START WITH 상위부서코드 IS NULL CONNECT BY 부서코드 = PRIOR 상위부서코드 ② SELECT * FROM 부서 START WITH 상위부서코드 IS NULL CONNECT BY PRIOR 부서코드 = 상위부서코드 ③ SELECT * FROM 부서 CONNECT BY 상위부서코드 IS NULL START WITH PRIOR 부서코드 = 상위부서코드 ④ SELECT * FROM 부서 START WITH 부서코드 IS NULL CONNECT BY 상위부서코드 = PRIOR 부서코드
정답
2번
해설
②가 정답입니다. START WITH 상위부서코드 IS NULL로 최상위 노드(본사)를 지정하고, CONNECT BY PRIOR 부서코드 = 상위부서코드로 부모에서 자식으로 탐색합니다. PRIOR는 이전 레벨(부모)을 의미하므로 부모의 부서코드가 자식의 상위부서코드와 일치하는 관계를 표현합니다. ①은 자식에서 부모로 역방향 탐색입니다. ③은 절의 순서가 잘못되었습니다. ④는 시작 조건이 잘못되었습니다.