Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

끄적끄적

프로그래머스 sql [없어진 기록] 본문

코테준비

프로그래머스 sql [없어진 기록]

alstj_성공 2021. 10. 7. 22:15

출처 : 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

ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블 두 개를 활용하여 쿼리문을 작성하는 문제

 

ANIMAL_OUTS에는 있는데 ANIMAL_INS에는 없는 동물들의 ID와 이름을 조회해야 한다.

 

ㅁ 필요한 개념

     - LEFT OUTER JOIN

 

만약 

FROM ANIMAL_OUTS OUTS
LEFT OUTER JOIN ANIMAL_INS INS ON INS.ANIMAL_ID=OUTS.ANIMAL_ID

이렇게 작성한다고 하면, 두 테이블의 ID가 같은 것을 기준으로 LEFT OUTER JOIN을 진행하는 의미

OUTS 테이블(왼쪽에 오는 테이블)을 기준으로 INS 테이블(오른쪽에 오는 테이블)과 비교하여

조건에 맞는 값이 있으면 가져오고, 없으면 NULL 값을 표시한다.

 

왼쪽에 있는 값은 무조건 가져오며, 조건에 맞는 오른쪽의 값이 없을 경우 null로 표시

따라서 OUTS를 기준으로 진행하게 되면, OUTS에는 있는데 INS에는 없는 동물들의 ID와 이름을 알 수 있다.

 

<참고>

1. NULL을 표시할 때는 INS.ANIMAL_ID = NULL 이렇게 쓰면 안되고, INS.ANIMAL_ID is NULL 과 같이 써야 한다.

2. JOIN할 때에는 SELECT 문에 그냥 NAME 이렇게 쓰면 안되고, OUTER.NAME과 같이 명확히 써줘야 한다.

** SELECT 뿐만 아니라 다른 절도 마찬가지