SQL
[프로그래머스] JOIN > 있었는데요 없었습니다
jaamong
2024. 1. 31. 20:19
문제
https://school.programmers.co.kr/learn/courses/30/lessons/59043
관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해 주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야 합니다.
풀이
- 보호 시작일보다 입양일이 더 빠른 경우
- 동물 아이디와 이름 조회
- 보호 시작일이 빠른 순으로 조회
SELECT i.ANIMAL_ID, i.NAME
FROM ANIMAL_INS i INNER JOIN ANIMAL_OUTS o ON i.ANIMAL_ID = o.ANIMAL_ID
WHERE i.DATETIME > o.DATETIME
ORDER BY i.DATETIME;
- 보호 시작일보다 입양일이 더 빠른 경우 → 보호도 했고, 입양도 된 경우 이므로 `INNER JOIN` 사용
- JOIN의 기준이 되는 column은 `ANIMAL_ID`
- 보호 시작일보다 입양일이 더 빠른 경우는 WHERE절을 이용하여 나타낼 수 있음. `ANIMAL_INS` 테이블의 `DATETIME`이 `ANIMAL_OUTS` 테이블의 `DATETIME`보다 큰 경우를 구하면 됨.
- 보호 시작일이 빠른 순으로 조회해야 하므로 `ORDER BY` 사용.