문제가 원하는 것을 요약하면
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;
'코딩테스트' 카테고리의 다른 글
프로그래머스 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2023.09.07 |
---|---|
프로그래머스 조건에 맞는 사용자 정보 조회하기 (0) | 2023.09.06 |
프로그래머스 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2023.09.05 |
프로그래머스 즐겨찾기가 가장 많은 식당 정보 출력하기 (2) | 2023.09.04 |
프로그래머스 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.09.04 |