문제
'홍길동'의 자식의 자식 노드를 셀프 조인으로 조회하는 SQL로 가장 적절한 것은?
① SELECT B.EMPNO, B.ENAME, B.MGR FROM EMP A, EMP B WHERE A.ENAME = '홍길동' AND B.MGR = A.EMPNO ② SELECT C.EMPNO, C.ENAME, C.MGR FROM EMP A, EMP B, EMP C WHERE A.ENAME = '홍길동' AND B.MGR = A.EMPNO AND C.MGR = B.EMPNO ③ SELECT A.EMPNO, A.ENAME, A.MGR FROM EMP A WHERE A.ENAME = '홍길동' ④ SELECT C.EMPNO, C.ENAME, C.MGR FROM EMP A, EMP C WHERE A.ENAME = '홍길동' AND A.MGR = C.EMPNO
정답
2번
해설
정답: 2. A를 홍길동, B를 홍길동의 자식, C를 B의 자식으로 조인해야 자식의 자식 노드를 조회할 수 있다.
오답 풀이
- 1번: 홍길동의 직접 자식만 조회한다.
- 2번: 홍길동의 손자 노드를 조회한다.
- 3번: 홍길동 본인만 조회한다.
- 4번: 홍길동의 상위 관리자 방향으로 조회하는 형태이다.
보충 개념 계층 구조를 셀프 조인으로 표현할 때는 계층 단계 수만큼 테이블 별칭을 추가한다. 부모-자식 관계는 일반적으로 자식.MGR = 부모.EMPNO 형태로 연결한다.