본문 바로가기

Algorithm/SQL

(MYSQL) - 프로그래머스 (SQL 고득점 kit - JOIN) : 없어진 기록 찾기

반응형

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

OUTER JOIN을 사용해보는 문제였습니다.

 

OUTER JOIN에는 두 가지가 있습니다. LEFT OUTER JOIN과 RIGHT OUTER JOIN입니다.

 

LEFT OUTER JOIN

 JOIN문 좌측에서 SELECT한 테이블의 모든 데이터를 조회한 후 우측에서 고른 테이블과 ON절 다음의 조건에 해당하는 모든 행을 가져옵니다. 만약 좌측 테이블의 데이터와 우측 테이블의 데이터가 짝지어지지 않는다면 해당 열의 행 값은 NULL로 표시되게 됩니다.

 

다음과 같은 방식으로 사용합니다.

SELECT 검색할 컬럼

FROM 테이블명 LEFT OUTER JOIN 테이블명2

ON 테이블.컬럼 = 테이블2.컬럼명;

 

RIGHT OUTER JOIN

 JOIN문 좌측에서 SELECT한 테이블의 모든 데이터를 조회한 후 우측에서 고른 테이블과 ON절 다음의 조건에 해당하는 모든 행을 가져옵니다. 만약 좌측 테이블의 데이터와 우측 테이블의 데이터가 짝지어지지 않는다면 해당 열의 행 값은 NULL로 표시되게 됩니다.

 

 

다음과 같은 방식으로 사용합니다.

SELECT 검색할 컬럼 

FROM 테이블명 RIGHT OUTER JOIN 테이블명2

ON 테이블명 = 테이블명2;

 

풀이방법

 1. 열 선택 : ANIMAL_OUTS 테이블을 B로 정의하고 B테이블의 ANIMAL_ID, NAME열을 선택합니다.

 2. LEFT OUTER JOIN 사용 : ANIMAL_INS 테이블을 A로 정의해 B테이블로 LEFT OUTER JOIN을 합니다. 그리고 ON 절로 A,B테이블의 ANIMAL_ID를 매칭시킵니다.

 3. 조건 세우기 : 매칭된 데이터 중 A테이블의 ANIMAL_ID의 값이 NULL인 것들만 추출합니다.

 4. 정렬 : B테이블의 ANIMAL_ID를 오름차순으로 정렬합니다.

 

Code

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