JOIN을 이용하여 조건을 만족하지 않는 값을 조회하는 문제다.

innter join만 써봤기 때문에 못 풀었고 outer join에 공부하고 풀었다.

outer join에 대해 설명하자면 left join, right join이 있다.

left join은 왼쪽에 오른쪽 테이블을 붙히는 형식으로

만약 ON의 조건을 만족하지 못한다면 오른쪽 테이블의 조건 col 은 NULL이 된다.

형식은 FROM A LEFT (OUTER) JOIN B ON(condition) 이다.

right join은 오른쪽 테이블에 왼쪽이 붙으며 비슷하므로 하나만 잘 알면 될 것 같다.

이를 이용하여 WHERE을 이용해 B가 null 인 것을 선택하면 조건이 아닌 테이블을 만들게 되는 것 이다.

SELECT * FROM (
    SELECT I.NAME AS NAME, I.DATETIME AS DATETIME 
    FROM ANIMAL_INS I LEFT OUTER JOIN ANIMAL_OUTS O ON (I.ANIMAL_ID = O.ANIMAL_ID)
    WHERE O.ANIMAL_ID IS NULL ORDER BY I.DATETIME ASC
    )
    WHERE ROWNUM <= 3;

+ Recent posts