
SQL 공부중 입니다. ✍✍✍
문제
https://school.programmers.co.kr/learn/courses/30/lessons/59043
풀이
SELECT AI.ANIMAL_ID, AI.NAME
FROM ANIMAL_INS AI
INNER JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE TIMESTAMPDIFF(SECOND,AI.DATETIME,AO.DATETIME) < 0
ORDER BY AI.DATETIME ASC;
문제에서 입양된 동물 중 입양일이 잘못 입력된 동물이라고 하였기 때문에 먼저 보호,입양 둘 다 이루어진 동물들을 찾기 위해 JOIN을 외래 키 (ANIMAL_ID)로 두 테이블을 연결하였습니다. 그 후 보호 시작일이 입양일보다 빠른 동물들을 구하기 위해 DATETIME 형의 차이를 나타내는TIMESTAMPDIFF() 함수를 사용하였습니다.🐕🐕🐕
다른 풀이에서는 아래와 같이
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS I, ANIMAL_OUTS O
WHERE I.ANIMAL_ID=O.ANIMAL_ID AND I.DATETIME>O.DATETIME
ORDER BY I.DATETIME;
JOIN을 활용하지 않고 WHERE 구문으로 두 테이블 간의 ANIMAL_ID가 같은 값을 찾은 뒤 등호를 통한 DATETIME 비교를 통해 보호일이 더 빠른 값을 구하는 방식을 볼 수 있었습니다.🐨🐨🐨
감사합니다.