Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[의사]의… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 6회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[의사]
| 의사ID | 의사명 | 지도의사ID |
|---|---|---|
| 1 | 윤하 | 3 |
| 2 | 서진 | 1 |
| 3 | 도윤 | 2 |
| 4 | 채원 | 1 |
SELECT 의사명, LEVEL AS LV,
CONNECT_BY_ISCYCLE AS CYC
FROM 의사
START WITH 의사ID = 1
CONNECT BY NOCYCLE PRIOR 의사ID = 지도의사ID
ORDER SIBLINGS BY 의사명;1
| 의사명 | LV | CYC |
|---|---|---|
| 윤하 | 1 | 1 |
| 서진 | 2 | 0 |
| 도윤 | 3 | 0 |
| 채원 | 2 | 0 |
2
| 의사명 | LV | CYC |
|---|---|---|
| 윤하 | 1 | 0 |
| 서진 | 2 | 0 |
| 도윤 | 3 | 1 |
| 채원 | 2 | 0 |
3
| 의사명 | LV | CYC |
|---|---|---|
| 윤하 | 1 | 0 |
| 서진 | 2 | 0 |
| 도윤 | 3 | 0 |
| 윤하 | 4 | 1 |
| 채원 | 2 | 0 |
4
| 의사명 | LV | CYC |
|---|---|---|
| 윤하 | 1 | 0 |
| 서진 | 2 | 0 |
| 채원 | 2 | 0 |
| 도윤 | 3 | 1 |
해설
도윤의 지도 대상이 다시 윤하라 순환이 생기지만 NOCYCLE 이 이미 경로에 있는 윤하로의 전개를 멈추고, 그 순환을 일으킨 도윤 행에 CONNECT_BY_ISCYCLE 1 을 준다.
계층은 깊이 우선으로 전개되어 윤하 아래 서진, 서진 아래 도윤이 먼저 나온 뒤 형제인 채원이 나온다.
- 윤하에 1 을 준 결과는 순환의 시작점을 표시한다고 오해한 것이다.
- 채원이 도윤보다 먼저인 결과는 너비 우선으로 전개한 것이다.
- 윤하가 4레벨로 다시 나온 결과는 NOCYCLE 이 순환 행을 출력한다고 본 것이다.
오류나 개정된 내용이 보이면 알려주세요