본문 바로가기

CS/SQL Problem

[Programmers] JOIN > 있었는데요 없었습니다

 

핵심

JOIN 
각 동물에 대해 보호 시작일입양일을 포함한 테이블을 만든다.

SELECT ANIMAL_ID, O.NAME 
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
USING (ANIMAL_ID)
참고 입양이 되지 않은 경우에는 입양일이 NULL이고 이 경우 비교 연산은 NULL을 반환한다. WHERE 절에서 조건을 평가할 때 연산 결과가 NULL이면, 해당 조건은 false로 간주되어 결과 집합에서 해당 행이 제외된다. 입양 기록만있고 보호 시작일이 없는 상황은 비정상이기 때문에 포함되어야 하지만 이 문제에서는 이런 상황을 다루지 않기 때문에 어떤 JOIN을 사용할지 고려할 필요가 없다. 하지만 문제의 조건에 따라 고려해야할 수 있다.

 

WHERE

보호 시작일이 더 빠른지 확인한다. (두 날짜를 비교한다)

WHERE I.DATETIME > O.DATETIME

 

Code

SELECT ANIMAL_ID, O.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
USING (ANIMAL_ID)
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME
728x90
반응형