프로그래머스 - 오랜 기간 보호한 동물

JIWOO YUN·2023년 8월 31일
0

문제링크


https://school.programmers.co.kr/learn/courses/30/lessons/59044

코드 및 설명


입양을 못간 동물 중,

가장 오래 보호소에 있었던 동물 3마리 이름과 보호 시작일 조회

  1. animal_outs 에 기록이 없는 동물
  2. 그 중 보호 시작일이 빠른애
  3. limit 3 3마리 제한
-- 코드를 입력하세요
SELECT AI.NAME,AI.DATETIME
FROM ANIMAL_INS AS AI
LEFT JOIN ANIMAL_OUTS AS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AO.ANIMAL_ID IS NULL
ORDER BY AI.DATETIME ASC
LIMIT 3

LEFT OUTER JOIN을 이용

  1. ANIMAL_INS 를 기준으로 하기 때문에 LEFT OUTER JOIN사용
    1. LEFT OUTER JOIN -> 왼쪽에 데이터 결과를 모두 가져 온다음 오른 쪽 데이터의 매칭하고, 매칭 되는 데이터가 없는 경우 NULL 표시를 하고 전부 만들어진다.
    2. LEFT JOIN을 할때 ON을 통해서 AI.ANIMAL_ID = AO.ANIMAL_ID를 해서 테이블을 합친다.
      1. LEFT 테이블 기준이기 때문에 둘이 ID가 같은게 없는 경우에는 AO.ANIMAL_ID에 NULL이 추가되며 새로 만들어지는 테이블에 추가된다.
    3. JOIN을 통해서 만들어진 테이블에서 WHERE 조건문으로 AO.ANIMAL_ID가 NULL인 경우를 체크
      1. NULL 이라는 것은 입양 기록이 없다는 것을 의미
    4. 오름 차순으로 정렬하고 최대 데이터 개수를 3개로 제한해서 문제에서 조건으로 건 3마리를 맞춘다.

profile
열심히하자

0개의 댓글