[ 프로그래머스 ] SQL챌린지 5일차 없어진 기록 찾기

2019. 9. 16. 22:25알고리즘/프로그래머스

728x90
반응형

문제 설명


문제 풀이

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

그냥 PK로 조인을 해버리면 INNER JOIN이 되어서 ANIMAL_INS와 ANIMAL_OUTS 둘 다 있는 값만 조인이 됩니다.

값이 사라진 것까지 불러와서 JOIN을 하려면 LEFT JOIN 또는 RIGHT JOIN을 해야 합니다.

 

LEFT JOIN은 왼쪽 테이블에 있는 모든 값을 가져옵니다. 조인이 되는 건 하고요. 그래서 오른쪽 테이블에 없는 값은 NULL로 채워집니다.

RIGHT JOIN은 반대로 오른쪽 테이블에 있는 값을 가져옵니다. 

저는 ANIMAL_OUTS를 왼쪽에 썼기 때문에 LEFT JOIN을 해야 보호소에 들어온 기록이 NULL인 튜플을 찾을 수 있습니다.

SELECT *
FROM ANIMAL_OUTS A LEFT JOIN ANIMAL_INS B ON A.ANIMAL_ID = B.ANIMAL_ID

이렇게 실행해 보시면 단박에 이해되실 겁니다.

 

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

 

코딩테스트 연습 - 없어진 기록 찾기 | 프로그래머스

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALS

programmers.co.kr

 

728x90
반응형