DB
[Oracle]Natural Join
_해랑
2022. 2. 16. 00:38
정말 미스테리다....
SELECT E.ENAME, E.HIREDATE
FROM EMP E NATURAL JOIN EMP C
WHERE C.ENAME = 'BLAKE'
AND E.HIREDATE > C.HIREDATE;
*
4행에 오류:
ORA-25155: NATURAL 조인에 사용된 열은 식별자를 가질 수 없음
SELECT E.EMPNO, E.ENAME, D.DNAME, E.HIREDATE, D.LOC
FROM EMP E NATURAL JOIN DEPT D
WHERE DEPTNO = 10
AND JOB NOT IN (SELECT JOB FROM EMP WHERE DEPTNO = 30);
EMPNO ENAME DNAME HIREDATE LOC
---------- ---------- -------------- -------- -------------
7839 KING ACCOUNTING 81/11/17 NEW YORK
일단 natural join에서 자동적으로 같다고 잡아주는 컬럼, 그러니까 여기서는 deptno에는 테이블명을 쓰면 안된다는건 안다.
출력되는 deptno는 emp 것도, dept 것도 아니니까.
NATURAL JOIN을 통해 SELF JOIN을 하는 것은 불가능.
일단 NATURAL JOIN 부터가 JOIN의 하위개념으로, 한가지 같은 컬럼이 있을 때 그걸 기준으로 자동적으로 잡아주는것.
그런데 SELF JOIN은 전부 같은 컬럼이니 불가능.