[Error]ORA-01417: 하나의 테이블은 하나의 다른 테이블과 포괄 조인할 수 있습니다
-
반응형
예전에 꽤 헤맸던 오류였는데 따로 메모해둔 자료가 있어서 기록을 해두려고 합니다.
ORA-01417: 하나의 테이블은 하나의 다른 테이블과 포괄 조인할 수 있습니다
이 에러는 대상 테이블을 두 개 이상의 테이블과 동시에 아우터 조인할 때 발생합니다. 아래 에러를 내기위해서 임의로 쿼리문을 만들었습니다.
SELECT A.O_NM
, B.O_NM
, C.O_NM
FROM (
SELECT 'C001' O_CD
, 'A' O_NM
FROM DUAL
) A
,(
SELECT 'C002' O_CD
, 'B' O_NM
FROM DUAL
) B
,(
SELECT 'C003' O_CD
, 'C' O_NM
FROM DUAL
) C
WHERE A.O_CD=B.O_CD(+)
AND C.O_CD=B.O_CD(+)
B라는 테이블이 A와 C에 동시에 아우터 조인이 되고 있습니다.
결과는 당연히에러입니다.
아우터 조인을 할 때는 대상 테이블을 오직 한 개의 테이블과 조인을 시켜야합니다.
위의 에러를 잡기 위해서는 아래와 같이 수정을 해주면 됩니다.
SELECT A.O_NM
, B.O_NM
, C.O_NM
FROM (
SELECT 'C001' O_CD
, 'A' O_NM
FROM DUAL
) A
,(
SELECT 'C002' O_CD
, 'B' O_NM
FROM DUAL
) B
,(
SELECT 'C003' O_CD
, 'C' O_NM
FROM DUAL
) C
WHERE A.O_CD=B.O_CD(+)
AND A.O_CD=C.O_CD(+)