다음 SQL의 결과 행 수는?[환자]환자번호환자명1한서준2오다인3문가람… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 6회
다음 SQL의 결과 행 수는?[환자]
| 환자번호 | 환자명 |
|---|---|
| 1 | 한서준 |
| 2 | 오다인 |
| 3 | 문가람 |
| 4 | 배하율 |
[의사]
| 의사번호 | 의사명 |
|---|---|
| 101 | 권태오 |
| 102 | 남시아 |
| 103 | 류지안 |
[진료]
| 진료번호 | 환자번호 | 의사번호 |
|---|---|---|
| 1 | 1 | 101 |
| 2 | 1 | 102 |
| 3 | 2 | (null) |
| 4 | 3 | 103 |
| 5 | 5 | 101 |
| 6 | 2 | 101 |
SELECT P.환자명, D.의사명 FROM 환자 P, 진료 J, 의사 D WHERE P.환자번호 = J.환자번호 AND J.의사번호 = D.의사번호 ORDER BY J.진료번호;
1
5
2
15
3
6
4
4
해설
세 테이블을 N-1=2개의 등가 조인 조건으로 모두 연결했으므로 환자와 의사 양쪽에 짝이 있는 진료 1·2·4·6의 4행만 남는다.
진료 3은 의사번호가 NULL 이라 의사와 비교가 성립하지 않고, 진료 5는 환자번호 5가 환자 테이블에 없어 빠진다.
- 의사번호 NULL 행은 등가 조인에서 제외되므로 5가 아니다.
- 짝이 없는 진료 행이 빠지므로 진료 전체 6이 아니다.
- 조인 조건이 두 개 모두 있어 카티션 곱 15가 생기지 않는다.
오류나 개정된 내용이 보이면 알려주세요