본문 바로가기
SQL

[프로그래머스 SQL 코테] 오랜 기간 보호한 동물(1) OUTER JOIN

by jnhn 2023. 9. 2.
[프로그래머스 SQL 코딩테스트] 오랜 기간 보호한 동물(1) OUTER JOIN

프로그래머스 오랜 기간 보호한 동물(1) 문제, 예시

JOIN 문법을 사용해서 두개의 테이블 중 한 테이블에만 있고, 다른 테이블에는 없는 컬럼을 검색할때는 OUTER JOIN 문법을 활용하면 된다.

OUTER 조인 문법
1991 ANSI JOIN 문법 ORACLE JOIN 문법
SELECT ~
FROM 테이블1 테1 LEFT/RIGHT OUTER JOIN 테이블2 테2
ON 테1.컬럼 = 테2. 컬럼;
SELECT ~
FROM 테이블1 테1= 테이블2 테2(+) '''ANSI 와정반대 방향
WHERE 테1.컬럼 = 테2. 컬럼

안시 조인과 오라클 아우터 조인의 방향이 정반대라 헷갈린다. 개인적으로 오라클 조인을 더 자주 쓰는데 (+)는 부족한 부분에 붙여준다고 기억하고 있다.

1999 ANSI 조인 문법

SELECT I.NAME, I.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 FETCH FIRST 3 ROWS ONLY;

오라클 조인 문법

SELECT I.NAME, I.DATETIME
 FROM  ANIMAL_INS I , ANIMAL_OUTS O
 WHERE I.ANIMAL_ID = O.ANIMAL_ID (+)
  AND O.ANIMAL_ID IS NULL
 ORDER BY I.DATETIME ASC FETCH FIRST 3 ROWS ONLY;