본문 바로가기
SQL

[프로그래머스 SQL] 있었는데요 없었습니다

by 코리니덕 2021. 8. 29.

https://programmers.co.kr/learn/courses/30/lessons/59043

 

코딩테스트 연습 - 있었는데요 없었습니다

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

programmers.co.kr

 

여기서는 INNER JOIN, LEFT JOIN을 써도 맞다

- 나는 정말 단순하게 IN, OUT 정보를 연결하여 이 두 테이블에 대한 교집합이 필요하다고 생각했고, 테이블 예시에서도 두 테이블의 교집합이 결과로 나오는 걸 보고 INNER JOIN을 사용했다.

- 찾아보니 대부분의 사람들은 LEFT JOIN을 사용한 것 같다. 어차피 WHERE절로 인해 조건에 해당하는 값만 찾을테니 두 개 다 사용 없는 듯 하다.

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_OUTS A
INNER JOIN ANIMAL_INS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME < B.DATETIME -- 보호 시작일보다 입양일이 더 빨라야 함
ORDER BY B.DATETIME -- 보호 시작일이 빠른 순으로 조회