천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/59042
SELECT
ao.ANIMAL_ID,
ao.NAME
FROM
ANIMAL_INS ai
LEFT JOIN
ANIMAL_OUTS ao
ON
ai.ANIMAL_ID = ao.ANIMAL_ID
WHERE
ai.ANIMAL_ID IS NULL
UNION
SELECT
ao.ANIMAL_ID,
ao.NAME
FROM
ANIMAL_INS ai
RIGHT JOIN
ANIMAL_OUTS ao
ON
ai.ANIMAL_ID = ao.ANIMAL_ID
WHERE
ai.ANIMAL_ID IS NULL
ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 조인하여 형태를 만들어준다.FULL OUTER JOIN을 지원하지 않기 때문에 UNION으로 합쳐야 한다. ANIMAL_ID 을 KEY 로 JOIN 진행.ai.ANIMAL_ID IS NULL 의 조건으로 두 조인 테이블을 출력을 수정해당 쿼리를 보고 너무 가독성도 그렇고 중복되는 코드이기 때문에 더 좋은 코드가 있는지 Chat GPT 씨에게 물어봄 ㅎㅎ
SELECT
ao.ANIMAL_ID,
ao.NAME
FROM
ANIMAL_OUTS ao
LEFT JOIN
ANIMAL_INS ai
ON
ao.ANIMAL_ID = ai.ANIMAL_ID
WHERE
ai.ANIMAL_ID IS NULL
LEFT JOIN만으로 충분히 원하는 코드를 사용할 수 있어 더 좋은 가독성의 코드를 생성할 수 있었다. (반대로 RIGHT 조인도 가능)
ANIMAL_INS 테이블에 없는 것만 알면 되기 때문에 ANIMAL_OUTS 기준으로만 JOIN을 하면 만족하는 것을 알 수 있다.