Oracle 에서 다음 SQL 의 실행 결과로 옳은 것은?[추천]고객추… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 10회
Oracle 에서 다음 SQL 의 실행 결과로 옳은 것은?[추천]
| 고객 | 추천인 |
|---|---|
| K1 | K3 |
| K2 | K1 |
| K3 | K2 |
| K4 | K2 |
SELECT LEVEL, 고객, CONNECT_BY_ISCYCLE AS 순환 FROM 추천 START WITH 고객 = 'K1' CONNECT BY NOCYCLE PRIOR 고객 = 추천인 ORDER SIBLINGS BY 고객;
1
| LEVEL | 고객 | 순환 |
|---|---|---|
| 1 | K1 | 0 |
| 2 | K2 | 0 |
| 3 | K3 | 1 |
| 3 | K4 | 0 |
2
| LEVEL | 고객 | 순환 |
|---|---|---|
| 1 | K1 | 0 |
| 2 | K2 | 0 |
| 3 | K3 | 1 |
3
| LEVEL | 고객 | 순환 |
|---|---|---|
| 1 | K1 | 0 |
| 2 | K2 | 0 |
| 3 | K3 | 1 |
| 4 | K1 | 0 |
| 3 | K4 | 0 |
4
| LEVEL | 고객 | 순환 |
|---|---|---|
| 1 | K1 | 1 |
| 2 | K2 | 0 |
| 3 | K3 | 0 |
| 3 | K4 | 0 |
해설
NOCYCLE 은 K3 의 자식으로 이미 조상인 K1 이 다시 나오는 순환을 만나도 오류 없이 그 행을 내지 않고, 순환을 일으킨 K3 에 CONNECT_BY_ISCYCLE 1을 표시한다.
K1→K2 다음 K2 의 자식 K3·K4 가 형제로 ORDER SIBLINGS BY 고객 순서에 따라 나오며, 자식이 없는 K4 는 순환이 아니므로 0이다.
- K4 가 빠진 표는 순환을 만나면 전체 전개가 멈춘다고 본 오해이다.
- K1 에 1을 준 표는 다시 방문될 행에 순환 표시가 붙는다고 본 것이다.
- LEVEL 4의 K1 을 넣은 표는 NOCYCLE 이 순환 행을 한 번 더 보여 준다고 본 것이다.
오류나 개정된 내용이 보이면 알려주세요