[ 프로그래머스 / SQL ] JOIN - 없어진 기록 찾기
없어진 기록 찾기
Programmers의 SQL 고득점 Kit
JOIN 문제
▶ 해당 문제 링크
https://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
정답 및 풀이
▶ JOIN 문
• 조인( JOIN ) 은 2개의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법이다.
• INNER JOIN( 내부 조인 )은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.
• OUTER JOIN( 외부 조인 )은 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.
• CROSS JOIN( 상호 조인 )은 한쪽 테이블의 모든 행과 다른 테이블의 모든 행을 조인하는 기능이다.
• SELF JOIN( 자체 조인 )은 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다.
• INNER JOIIN( 내부 조인 )
- 두 테이블 연결할 때, 가장 많이 사용한다.
- 그냥 조인이라고 부르는것은 INNER JOIN을 의미한다.
SELECT 조회할 컬럼
FROM 테이블명1
INNER JOIN 테이블명2
ON 테이블1.컬럼 = 테이블2.컬럼;
[ WHERE 조건 ]
• OUTER JOIN( 외부 조인 )
- INNER JOIN은 두 테이블에 모두 데이터가 있어야 결과가 나오지만, 외부조인은 한쪽에만 데이터가 있어도 나온다.
- 주로 LEFT OUTER JOIN이 많이 쓰인다.
SELECT 조회할 컬럼명
FROM 테이블명1( left 테이블 )
< LEFT / RIGHT / FULL > OUTER JOIN 테이블명2( right 테이블 )
ON 조건문;
[ WHERE 조건 ]
※ OUTER JOIN 종류
• LEFT OUTER JOIN : 왼쪽 테이블의 모든 값이 출력되는 조인
• RIGHT OUTER JOIN : 오른쪽 테이블의 모든 값이 출력되는 조인
• FULL OUTER JOIN : 왼쪽 or 오른쪽 테이블의 모든 값이 출력되는 조인
▶ 정답
• 입양을 간 기록은 있지만 보호소에 들어온 기록은 유실된 즉, ANIMAL_OUTS에는 있지만 ANIMAL_INS에는 없는
동물의 ID와 이름을 조회 해야 한다.
• 데이터가 무조건 있는 ANIMAL_OUTS 테이블을 왼쪽에 두고, ANIMAL_OUTS와 LEFT OUTER JOIN을 한다.
• ANIMAL_ID가 같은값이 오른쪽 ANIMAL_INS테이블에 존재하지 않는다면 , NULL값으로 나오게 된다
이를 WHERE조건절을 활용하여 적어준다.
• ID순으로 조회하기 때문에 ORDER BY를 사용하면 된다.
SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_OUTS AS OUTS
LEFT OUTER JOIN ANIMAL_INS AS INS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.ANIMAL_ID IS NULL;
ORDER BY ANIMAL_ID;