상당히 유익하고 재미있는 문제였다.
2개의 테이블이 존재하는 것을 보고
'아! 이건 JOIN을 사용해야 하는 문제다' 라는걸 바로 알아차렸다.
하지만, 한 번도 JOIN을 사용해 본 적이 없어서 찾아본 결과
JOIN에는 OUTER, INNER, CROSS, SELF가 있었다.
OUTER JOIN에는
로 LEFT, FLL, RIGHT가 존재했고 OUTER JOIN에서 OUTER를 생략한 LEFT JOIN, FULL JOIN, RIGHT JOIN으로 사용 가능했다.
LEFT JOIN : FROM 절에서 왼쪽에 적은 테이블을 기준으로 출력
RIGHT JOIN : FROM 절에서 오른쪽에 적은 테이블을 기준으로 출력
FULL JOIN : FROM절에 사용된 모든 테이블을 기준으로 출력
이다. 이때, WHERE을 어떻게 작성하느냐에 따라 "교집합" 부분의 출력 여부를 조작할 수 있는데
WHERE B.KEY IS NULL 또는 A.KEY IS NULL : 교집합 출력 안 함
이었다.
(향후 문제를 풀면서 INNER, FULL, SELF 조인이 사용될 경우 그 문제에서 각각의 JOIN을
추가로 학습할 계획이다.)
마지막으로 상위 3개의 항목만을 출력해야 하는데 이때 사용되는 방법이 LIMIT 항목이었다.
LIMIT 사용법은
LIMIT 시작 위치, 출력할 개수
이다.
제출한 코드 :
SELECT A.NAME, A.DATETIME
FROM ANIMAL_INS AS A LEFT JOIN ANIMAL_OUTS AS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.ANIMAL_ID IS NULL
ORDER BY DATETIME ASC
LIMIT 0, 3
'SQL 문제' 카테고리의 다른 글
문제 33. 상품 별 오프라인 매출 구하기(난이도 7) (0) | 2024.07.22 |
---|---|
문제 32. 카테고리 별 도서 판매량 집계하기(난이도 7)(INNER JOIN) (0) | 2024.07.17 |
문제 29. 인기있는 아이스크림(난이도 1) (0) | 2024.07.17 |
문제 27. 진료과별 총 예약 횟수 출력하기(난이도 7) (0) | 2024.07.17 |
문제 26. 입양 시각 구하기(1)(난이도 6)(시간 함수) (0) | 2024.07.12 |