문제에서 원하는 것은
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;
이런 식으로 작성이 된다.
'코딩테스트' 카테고리의 다른 글
프로그래머스 카테고리 별 도서 판매량 집계하기 (0) | 2023.09.03 |
---|---|
프로그래머스 오랜 기간 보호한 동물(2) (0) | 2023.09.02 |
프로그래머스 오랜 기간 보호한 동물(1) (0) | 2023.09.01 |
백준 돌 게임7 (9661번) (0) | 2022.08.31 |
백준 돌 게임6(9660번) (0) | 2022.08.31 |