코딩테스트
프로그래머스 없어진 기록 찾기
코드 죄수
2023. 9. 6. 10:01
문제가 원하는 것을 요약하면
1. 입양을 간 동물이고
2. 보호기록이 사라진 동물의 정보
테이블을 보고 sql문을 차근차근 작성하면
먼저 1.입양을 간 동물이어야 하니 JOIN을 사용할 것이다. 원래는 INNER JOIN을 사용하겠지만 여기서 2. 보호기록이 사라진 동물의 정보 때문에 ANIMAL_INS 테이블에는 정보가 없고 ANIMAL_OUTS에만 기록이 있는 동물의 정보를 원함으로
RIGHT JOIN을 사용하여 작성하는걸로 한다.
FROM ANIMAL_INS A RIGHT JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
그다음 RIGHT JOIN으로 오른쪽 테이블을 기준으로 JOIN을 하였기 때문에 왼쪽과의 교집합 데이터들을 제거해 주어야 한다.
( 이때 교집합 데이터는 보호소 기록이 사라지지 않은 동물들의 데이터 이다. )
따라서 WHERE절을 사용하여 한번 걸러 주도록 한다.
WHERE A.DATETIME is NULL
이제 sql을 합쳐보면 아래와 같은 sql이 나오게 된다.
SELECT B.ANIMAL_ID, B.NAME
FROM ANIMAL_INS A RIGHT JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME is NULL
ORDER BY B.ANIMAL_ID ASC;