제목: 있었는데요 없었습니다 

레벨: LEVEL 3

 

으아아 폭풍문제풀이 가보자고~

 

 

이 문제는 테이블에 외래키도 껴있고 그러니까 먼저 데이터설명을 보는 게 좋다.

 

 

관리자형.. 실수를 멈춰주라..😩

실수는 관리자가 하고 역시 수습하는 건 나같은 사원이구나..

암턴 

문제를 요약하면 지금 바쁘다바빠 실수사회이기 때문에 

입양일이 잘못됐다. 그래서 보호 시작일보다 입양일이 빠른 애들은 쇽쇽 골라야 한다.

 

ANIMAL_INS 테이블과 ANIMAL_OUT테이블을 먼저 합친 뒤 

각 테이블의 날짜를 비교하여 조건에 해당하는 데이터를 빼내자.

 

정답은 이렇게 작성했다.

비교적 간단한 문제였으나 가장 고민이었던 건 WHERE절에 있는 부등호였다.

 

뭐 숫자는 부등호가 바로바로 이해되지만 날짜도 부등호에 적용될까..?

하는게 의문이었다!

그런데 해보니 됐다.

 

날짜의 부등호는 앞선 날짜가 더 작은 쪽,

뒤에 있는 날짜가 더 큰쪽이라고 생각하면 된다.

 

즉, 우리는 보호시작일(보호소 입소일)보다 입양일이 빠른 데이터(잘못된 데이터)를

찾는 것이기 때문에 

입소일(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

→ 기준 테이블과 합칠(JOIN) 테이블을 작성한다. 그래야 WHERE절에 있는 조건을 적용하여 원하는 값을 더을 수 있다.


where ANIMAL_INS.DATETIME > ANIMAL_OUTS.DATETIME

→ 값의 기준이 되는 날짜 비교를 WHERE절에 넣어준다. 간단하게 부등호로 하기!


order by ANIMAL_INS.DATETIME;

→ 마지막으로 정렬순서. 오류가 없는 보호시작일로 정렬하는데 이때 

보호시작일이 빠른 순서이기 때문에 오름차순으로 하면 된다.

오름차순은 ORDER BY의 기본설정이라 따로 키워드를 안줘도 된다.

 

 

 

+ Recent posts