[JOIN] 없어진 기록 찾기 ⭐⭐⭐

Date:     Updated:

카테고리:

태그:

MySQL로 풀이했습니다.
출처 : 프로그래머스 https://programmers.co.kr/learn/challenges

📌 없어진 기록 찾기

난이도 ⭐⭐⭐

🚀 문제

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


🚀 내 풀이 ⭕

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

SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS I RIGHT JOIN ANIMAL_OUTS O
    ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID
  • JOIN 은 여러 테이블의 데이터를 한 번에 검색할 수 있게 해준다. 두 테이블을 연결하는 것이기 때문에 두 테이블이 공통으로 가지고 있는 열이 있어야 한다. 즉, 외래키가 있어야 한다.
    • INNER JOIN : 교집합
    • OUTER JOIN : 합집합
      • LEFT JOIN : 왼쪽 테이블 전체와 오른쪽 테이블은 두 외래키 값이 같은 결과만 리턴 (따라서 오른쪽 테이블은 NULL 이 포함될 수 있음)
      • RIGHT jOIN : 오른쪽 테이블 전체와 왼쪽 테이블은 두 외래키 값이 같은 결과만 리턴 (따라서 왼쪽 테이블은 NULL 이 포함될 수 있음)

두 테이블의 ANIMAL_ID 외래키를 기준으로 I 테이블(보호소 들어왔을 때)과 O 테이블(입양 갔을 때) 을 JOIN 한다. RIGHT JOIN 했기 때문에 JOIN 한 결과는 O테이블의 ANIMAL_ID 값은 NULL 이 있을 수 없고(입양 간 기록은 반드시 있음) I 테이블의 ANIMAL_ID 값엔 NULL 이 포함될 수 있다.(보호소 기록이 없는, 즉 아이디가 없는 행이 있을 수 있음) 이렇게 JOIN 한 결과에서 I 테이블의 ANIMAL_ID 가 NULL 인 것을 찾는다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Programmers SQL 카테고리 내 다른 글 보러가기

댓글 남기기