[Database] 보호소에서 중성화한 동물

[프로그래머스] 보호소에서 중성화한 동물 MySQL

문제 : 프로그래머스_보호소에서 중성화한 동물

문제 설명

LEFT JOIN

입양 전의 테이블인 ANIMAL_INS와 입양 후의 테이블인 ANIMAL_OUTS가 모두 필요하므로, LEFT JOIN이 필요한 문제입니다.
문제에서 요구하는 것은 입양 전에는 중성화가 되어있지 않지만, 입양 후에 중성화가 된 동물을 출력하는 것입니다.
여기서 중성화가 되어 있지 않은 동물은 Intact~로 표현됩니다.
중성화가 되어있는 동물은 Spayed~Neutered~로 표현됩니다.


Solution

우선 select에서 animal_outs의 ID, Type, Name을 요청합니다.
구하는 아이디, 타입, 이름은 animal_outs 테이블이므로 from 뒤에 바로 animal_outs를 써주고 left join 합니다.
이때 join 하는 조건은 animal_outs와 animal_ins의 id가 같은 경우로 해줍니다.
그러면 서로의 아이디가 동일한 동물들이 출력되게 될 텐데, 여기서 where 조건을 이용하여 입양 전엔 중성화가 안 되어있는 동물을, 입양 후엔 중성화가 되어있는 동물로 조건을 걸어줍니다.

Description

  • like 'intact%'의 표현으로 중성화 여부를 문자열에 대한 조건으로 판단하게 했습니다.

select animal_outs.ANIMAL_ID, animal_outs.ANIMAL_TYPE, animal_outs.NAME from animal_outs 
left join animal_ins on animal_outs.animal_id = animal_ins.animal_id 
where animal_ins.sex_upon_intake like 'intact%' and 
(animal_outs.sex_upon_outcome like 'Neutered%' or animal_outs.sex_upon_outcome like 'Spayed%')