[프로그래머스/MySQL] JOIN
https://programmers.co.kr/learn/courses/30/lessons/59042
문제풀이
동물이 입양을 간 기록이 있는데(ANIMAL_OUTS에 있는데) 보호소에 들어온 기록이 없는(ANIMAL_INS에 없는) 동물의 ID와 이름을 ID 순으로 조회해야 한다.
LEFT JOIN을 활용한다.
코드2와 같은 경우도 성립한다.
소스코드
코드1
-- 코드를 입력하세요
SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
FROM ANIMAL_OUTS
LEFT JOIN ANIMAL_INS
ON ANIMAL_INS.ANIMAL_ID=ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_INS.ANIMAL_ID IS NULL
코드2
select animal_id, name
from animal_outs
where animal_id not in (select animal_id from animal_ins);
https://programmers.co.kr/learn/courses/30/lessons/59043
문제풀이
보호 시작일(ANIMAL_INS의 DATETIME)보다 입양일(ANIMAL_OUTS의 DATETIME)이 더 빠른 경우를 조회해야 한다.
소스코드
-- 코드를 입력하세요
SELECT ANIMAL_INS.ANIMAL_ID, ANIMAL_INS.NAME
FROM ANIMAL_INS
LEFT JOIN ANIMAL_OUTS
ON ANIMAL_INS.ANIMAL_ID=ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_INS.DATETIME>=ANIMAL_OUTS.DATETIME
ORDER BY ANIMAL_INS.DATETIME
https://programmers.co.kr/learn/courses/30/lessons/59044
문제풀이
아직 입양을 못 간 동물을 조회해야하므로 ANIMAL_INS에는 있지만 ANIMAL_OUTS에 없는 동물을 조회해야한다.
이때 가장 오래 있었던 3마리만 조회해준다.
소스코드
-- 코드를 입력하세요
SELECT ANIMAL_INS.NAME, ANIMAL_INS.DATETIME
FROM ANIMAL_INS
LEFT JOIN ANIMAL_OUTS
ON ANIMAL_INS.ANIMAL_ID=ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_OUTS.ANIMAL_ID IS NULL
ORDER BY ANIMAL_INS.DATETIME LIMIT 3
https://programmers.co.kr/learn/courses/30/lessons/59045
문제풀이
보호소에 들어올 당시에는 중성화되지 않았지만(ANIMAL_INS테이블에서 SEX_UPON_INTAKE가 Intact Male, Intact Female이면서) 보호소를 나갈 당시에는 중성화된 동물(ANIMAL_OUTS테이블에서 SEX_UPON_OUTCOME이 Spayed Female, Neutered Male인 경우)을 조회해야 한다.
코드2의 경우도 성립한다.
소스코드
코드1
-- 코드를 입력하세요
SELECT ANIMAL_INS.ANIMAL_ID, ANIMAL_INS.ANIMAL_TYPE, ANIMAL_INS.NAME
FROM ANIMAL_INS
LEFT JOIN ANIMAL_OUTS
ON ANIMAL_INS.ANIMAL_ID=ANIMAL_OUTS.ANIMAL_ID
WHERE (ANIMAL_INS.SEX_UPON_INTAKE="Intact Male" or ANIMAL_INS.SEX_UPON_INTAKE="Intact Female")
and (ANIMAL_OUTS.SEX_UPON_OUTCOME="Spayed Female" or ANIMAL_OUTS.SEX_UPON_OUTCOME="Neutered Male")
ORDER BY ANIMAL_INS.ANIMAL_ID
코드2
SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS A
INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.SEX_UPON_INTAKE IN ('Intact Male','Intact Female')
AND B.SEX_UPON_OUTCOME IN ('Neutered Male','Spayed Female')
Author And Source
이 문제에 관하여([프로그래머스/MySQL] JOIN), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bye9/프로그래머스MySQL-JOIN저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)