SQL - 문제 미리보기
문제 1643
hard
다음 상황에서 가장 적절한 JOIN 타입은?
상황: 모든 고객 목록을 출력하되, 주문 이력이 있는 고객은 최근 주문일을 함께 표시하고, 주문 이력이 없는 고객은 '주문없음'으로 표시하고 싶습니다.
정답: B
요구사항 분석:
• 기준: 모든 고객 목록 (고객 테이블이 기준)
• 보존: 주문 이력이 없는 고객도 포함
• 결합: 주문 정보가 있으면 표시, 없으면 NULL 처리
• 결론: LEFT JOIN이 최적
LEFT JOIN을 선택하는 이유:
1. 기준 테이블 완전 보존:
```sql
SELECT
Customers.CustomerID,
Customers.CustomerName,
Orders.OrderDate
FROM Customers -- 기준 테이블 (왼쪽)
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
```
2. 요구사항 충족:
• 모든 고객: Customers 테이블의 모든 레코드 포함
• 주문 정보: 있으면 OrderDate 표시, 없으면 NULL
• 누락 없음: 주문하지 않은 고객도 목록에 포함
3. 예상 결과:
```txt
CustomerID | CustomerName | OrderDate
1 | John Smith | 2024-01-15
2 | Jane Doe | NULL -- 주문 없음
3 | Bob Wilson | 2024-02-20
4 | Alice Brown | NULL -- 주문 없음
```
💡 학습 팁
이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.