[SQL] 없어진 기록 찾기

Song-YunMin·2020년 12월 13일
1

DATABASE

목록 보기
2/8
post-thumbnail

문제

프로그래머스 - 없이진 기록 찾기

해설

이 문제는 JOIN을 이용하여 풀어야 하는 문제이다.
문제를 보면,

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

SQL문제는 일반적으로 문제를 잘 읽어보면 답을 알 수 있다.
가정은, 일부 데이터가 유실 되었다는 것.
내용은, 입양을 간 기록(ANIMAL_OUTS)은 있지만 보호소에 들어온 기록(ANIMAL_INS)이 없다.

기록을 찾으려면, 입양을 간 기록 테이블과 보호소에 들어온 기록 테이블을 JOIN문을 이용하여 데이터의 차이를 비교하면 된다.

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

분석

ANIMAL_OUTS 테이블과 ANIMAL_INS 테이블을 LEFT JOIN한다, 별칭은 각각 AB로 한다. 출력은 문제에서 제시한 ANIMAL_ID속성과 NAME속성을 출력한다.

JOIN의 조건 Key는 각 테이블의 ANIMAL_ID가 같은 값이다.
(WHERE), B 테이블(ANIMAL_INS)의 값이 NULL일 경우만 출력하도록 한다.
즉, 입양을 간 기록과 받은 기록을 합쳐, 받은 기록쪽 테이블의 값이 NULL인 속성만 출력하는 것.

또한(ORDER BY), ANIMAL_ID 속성을 기준으로 정렬 한다.

LEFT JOIN은 왼쪽에 있는 테이블로 오른쪽 테이블의 속성 값을 합쳐 왼쪽 테이블의 속성을 전부 출력하는 것.

profile
고독한 서버 개발 3년차

2개의 댓글

comment-user-thumbnail
2020년 12월 15일

문제에서 제시한 조인 방법도 있고, 서브 쿼리를 이용해서 하는 방법도 좋더라고요 !

1개의 답글