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;
'Coding_Test 연습 > Oracle' 카테고리의 다른 글
[프로그래머스] (Oracle) LV3 없어진 기록 찾기 (0) | 2022.10.12 |
---|---|
[프로그래머스] (Oracle) LV3 오랜 기간 보호한 동물(2) (0) | 2022.10.11 |
[프로그래머스] (Oracle) LV2 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2022.10.11 |
[프로그래머스] (Oracle) LV2 루시와 엘라 찾기 (0) | 2022.10.11 |
[프로그래머스] (Oracle) LV2 입양 시각 구하기(1) (0) | 2022.10.11 |