Database

없어진 기록 찾기 - LEFT JOIN

리차드 2020. 11. 24. 01:49

 

문제

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

 

코딩테스트 연습 - 없어진 기록 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 


LEFT JOIN을 사용하는 문제로 이해했다.

LEFT JOIN은
FROM 절에 선언된 테이블의 값은 무조건 출력하고
LEFT JOIN 절에 선언된 테이블의 값은 있으면 출력하고 없으면 NULL로 출력된다.

아래 사진처럼 먼저 선언된 ANIMAL_OUTS 테이블의 다섯 컬럼이 좌측에 먼저 출력되고
LEFT JOIN 절에 선언된 ANIMAL_INS 테이블의 다섯 컬럼이 우측에 이어서 출력된다.

ON 절에 선언한 조건에 일치하는 값이 LEFT JOIN 절에 선언한 테이블에 없더라도 칸을 비워서 출력함으로써
아래 사진과 같이 두 테이블 값을 비교할 때 활용할 수 있다.
아래 사진에서 비어있는 행은 해당 ANIMAL_ID가
ANIMAL_OUTS 에는 존재하지만 ANIMAL_INS 에는 존재하지 않는다는 의미이다.

기준 테이블은 모두 출력, JOIN 대상은 일치할 경우 출력

직접 그렸다 하하. - -... 암튼 코드.


1
2
3
4
5
6
7
8
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
cs