본문 바로가기
  • 실행력이 모든걸 결정한다
DB/SQL Problems

[SQL-JOIN, 난이도 중하] 있었는데요 없었습니다

by 김코더 김주역 2020. 12. 7.
반응형

<ANIMAL_INS> 테이블

 

<ANIMAL_OUTS> 테이블

 

문제 설명

 

해설 : ANIMAL_INS와 ANIMAL_OUTS 테이블을 ANIMAL_ID에 대해 JOIN해주면 한 동물이 보호소에 들어왔을 때와 입양 갔을 때의 정보를 한 레코드에 확인할 수 있게 된다. ANIMAL_INS, ANIMAL_OUTS의 DATETIME은 각각 보호 시작일과 입양일을 의미하기 때문에 ANIMAL_OUT의 DATETIMEANIMAL_INS의 DATETIME보다 더 작은 레코드들을 찾으면 된다. 문제가 원하는 정보인 ANIMAL_ID, NAME 값을 레코드마다 추출하여 반환해주면 된다.

 

SELECT AI.ANIMAL_ID, AI.NAME 
FROM ANIMAL_INS AI JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID=AO.ANIMAL_ID
WHERE AI.DATETIME>AO.DATETIME
ORDER BY AI.DATETIME;

 

 

 

 

* FROM문에서 ANIMAL_INS를 AI로, ANIMAL_OUTS를 AO로 사용할 수 있게 설정했다.

 

SELECT : 조회하라

 

AI.ANIMAL_ID, AI.NAME : ANIMAL_INS 테이블에 있는 ANIMAL_ID, NAME 필드값들을

 

FROM ANIMAL_INS AI JOIN ANIMAL_OUTS AO : ANIMAL_INS와 ANIMAL_OUTS 를 JOIN으로 합친 테이블에서 (단, 앞으로 ANIMAL_INS 대신 AI를, ANIMAL_OUTS 대신 AO를 사용할 수 있게 한다)

 

ON (AI.ANIMAL_ID=AO.ANIMAL_ID) : AI 테이블의 ANIMAL_ID 필드명과 AO 테이블의 ANIMAL_ID 필드명이 같은 레코드를 기준으로

 

WHERE AI.DATETIME>AO.DATETIME : ANIMAL_OUTS의 DATETIME 값이 ANIMAL_INS의 DATETIME 값보다 더 작은 레코드들을

 

ORDER BY AI.DATETIME : ANIMAL_INS의 DATETIME을 기준으로 오름차순 하여

 

 

반응형

댓글