꾸물꾸물 졔의 개발공부

[MySQL] 프로그래머스 - 없어진 기록 찾기 (OUTER JOIN) 본문

알고리즘/SQL

[MySQL] 프로그래머스 - 없어진 기록 찾기 (OUTER JOIN)

체제 2023. 5. 2. 23:22

https://school.programmers.co.kr/learn/courses/30/lessons/59042

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • ANIMAL_INS : 동물 보호소에 들어온 동물의 정보를 담은 테이블 
  • ANIMAL_OUTS : 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블 

 

 

문제

천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.


 

구현 과정

  • 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물 찾기 

 

1️⃣ 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물 찾기 

ANIMAL_OUTS에는 있지만 ANIMAL_INS에는 없는 동물의 ID를 찾아야 한다. 그러기 위해서는 ANIMAL_OUTS 테이블을 기준으로 OUTER JOIN을 하여 ANIMAL_INS의 컬럼이 NULL인 경우를 조회하면 된다.

SELECT ~
FROM ANIMAL_INS A RIGHT OUTER JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.ANIMAL_ID IS NULL

(👉OUTER JOIN은 한쪽에만 데이가 있어도 결과가 조회된다. 기준테이블의 값은 모두 출력되고, 매칭되는 테이블에 매칭 데이터가 없는 경우 NULL로 표시된다.) 


 

✔️코드

SELECT B.ANIMAL_ID, B.NAME
FROM ANIMAL_INS A RIGHT OUTER JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.ANIMAL_ID IS NULL
ORDER BY B.ANIMAL_ID;

 

😋Lv3도 완! 헤헤