30대 갓생살기😍

반응형
 

코딩테스트 연습 - 오랜 기간 보호한 동물(1)

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

programmers.co.kr

해당 글은 Programmers 코딩테스트 연습을 토대로 MYSQL 로 작성되었습니다.


Q 문제: 아직 입양을 못 간 동물 중,

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

-- 코드를 입력하시오.
SELECT I.NAME, I.DATETIME FROM ANIMAL_INS I
LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL
ORDER BY I.DATETIME LIMIT 3; 

 

즉, 해당문제는 동물 보호소에 들어온 동물들 중 아직 입양을 못간 동물친구들을 찾고

그 중 가장 동물 보호소에 빨리 들어온 동물친구 3마리를 찾는 문제입니다. 


이 문제에서 중요한 개념은 기본키, 외래키라고 생각이 든다.

해당 문제에서 나왔듯이 입양보낸 동물테이블의 동물이름은 동물보호소테이블의 동물이름의 외래 키이다.그러므로 자연스레 동물보호소의 동물이름를 참조하고 있기 때문에 기본키가 된다. 

그리고 이 때 우리는 외래키의 특성을 알아야한다.

외래키모든 필드의 값은 참조하는 기본키와 동일하거나 NULL값이다.

즉, 동물보호소의 동물이름과 입양보낸 동물이름을 기준으로 조인을 시킨다면

동물보호소 동물 중 입양을 가지않는 (입양시킨동물에 이름이 없는 경우) NULL값 처리가 될 것이다. 

그러므로 조인 후 입양시킨동물( ANIMAL_OUT) IS NULL 을 하여 빈값을 찾아 입양을 가지않는 동물을

찾을 수 있는 것이다.

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading