현재 대출 중인 도서가 한 권도 없는 회원을 다음 결과처럼 조회하려 한… | [SQLD] SQL 개발자 기출유형 모의고사 5회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 5회
현재 대출 중인 도서가 한 권도 없는 회원을 다음 결과처럼 조회하려 한다. ( ㉠ )에 들어갈 구문으로 옳은 것은?[회원]
| 회원번호 | 이름 |
|---|---|
| 1 | 김하늘 |
| 2 | 이도현 |
| 3 | 박서윤 |
| 4 | 최민준 |
| 5 | 정유나 |
[대출]
| 대출번호 | 회원번호 | 도서번호 | 상태 |
|---|---|---|---|
| 101 | 1 | 11 | 반납 |
| 102 | 1 | 12 | 대출중 |
| 103 | 2 | 13 | 반납 |
| 104 | 3 | 11 | 대출중 |
| 105 | 3 | 14 | 대출중 |
| 106 | 5 | 12 | 반납 |
| 107 | 5 | 15 | 반납 |
SELECT M.회원번호, M.이름
FROM 회원 M LEFT OUTER JOIN 대출 L
ON M.회원번호 = L.회원번호
( ㉠ )
ORDER BY M.회원번호;[결과]
| 회원번호 | 이름 |
|---|---|
| 2 | 이도현 |
| 4 | 최민준 |
| 5 | 정유나 |
1
AND L.상태 = '대출중' WHERE L.대출번호 IS NULL
2
AND L.상태 IN ('대출중', '반납')3
WHERE L.상태 = '반납' OR L.상태 IS NULL
4
WHERE L.대출번호 IS NULL
해설
회원별 '대출중' 행만 ON 절에서 결합한 뒤, 결합 상대가 없어 NULL 로 채워진 회원만 WHERE 에서 고르는 ON 절 조건 + WHERE IS NULL 조합이 정답이다.
ON 조건은 결합 여부만 정하고 왼쪽 행은 보존하므로 이도현(반납만)·최민준(이력 없음)·정유나(반납만)가 NULL 결합 행으로 남아 3행이 된다.
WHERE L.상태 = '반납' OR L.상태 IS NULL은 대출 중 도서가 있는 김하늘도 반납 행 때문에 남고 정유나는 두 번 나온다.WHERE L.대출번호 IS NULL은 대출 이력이 전혀 없는 최민준만 남긴다.AND L.상태 IN ('대출중', '반납')은 걸러 내는 조건이 없어 모든 회원이 대출 건수만큼 나온다.
오류나 개정된 내용이 보이면 알려주세요