코딩테스트
프로그래머스 있었는데요 없었습니다
코드 죄수
2023. 9. 2. 00:14
문제에서 원하는 것은
1. 입양일이 보호 시작일 보다 빨라야 하며
2. 보호 시작일 순으로 조회되어야 한다.
이제 두 테이블을 보며 1번부터 차근차근 sql구문으로 바꾸도록 하겠다.
1. 입양일이 보호일 보다 빨라야 한다는 것은 일단 두 테이블을 JOIN 해야 하며 두 테이블의 데이터가 모두 존재해야 입양이 된 동물이기 때문에 JOIN 중에서 INNER JOIN을 사용하면 된다.
또한 WHERE절을 이용하여 입양일이 보호 시작일 보다 작으면 입양일이 더 오래된 것을 보여줄 것이다.
따라서 이를 sql로 바꾸면
FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME
이런 식의 sql 구문이 만들어질 것이다 ON 뒤에 는 두 테이블의 공통적인 ANIMAL_ID 속성을 이용하여 조인을 해준 것이다.
아까 말했듯이 이미 입양이 된 동물 중에서 조회를 해야 하기 때문에 INNER JOIN을 한 모습을 볼 수 있다.
두 번째로 2. 보호 시작일이 빠른 순으로 조회가 되어야 하기 때문에 ORDER BY절을 이용하여 DATETIME이 빠른 순으로 정렬하면 된다, 이를 sql로 변경하면
ORDER BY A.DATETIME ASC;
이런 식이 될 것이다.
그리고 아이디와 이름을 출력하라고 하였으므로 이것까지 모두 합친 sql은
SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME
ORDER BY A.DATETIME ASC;
이런 식으로 작성이 된다.