*test 테이블 컬럼A 컬럼B 컬럼C 컬럼D aa bb cc 12 df ju tr 67 . . . 이렇게 테이블에 데이타가 들어 있습니다.
where (test.a=test1.a(+) and test.d =test.d(+)) or ( test.b=test1.b(+) and test.d=test1.d(+)) or( test.c=test1.c(+) and test.d=test1.d(+)
위처럼 test테이블의 칼럼a하고 컬럼d값으로 test1테이블 하고 조인하고 또 컬럼b값하고 컬럼d값으로 test1하고 조인걸고. 컬럼c도 마찬가지로요 그런데 저 쿼리는 당연 or 에서는아우터 사용 못 한다고 에러나는데요 그럼 아우터를 빼면 저 세가지 중에 하나라도 매핑되는게 있는거만 나오는데요 저 세가지 경우 모두 매핑 안되는 값도 어떻게 출력하게 하는지요?
by Oracler
[2014.01.02 22:00:17]
test.d = test.d(+) 이 부분이 이상한데요? test 테이블의 같은 d 컬럼끼리 조인하는게 말이 되나요? 오타인가요?
by sm5
[2014.01.02 22:39:01]
네..오타입니다..test1 입니다.
by 마농
[2014.01.03 08:25:50]
-- Oracle Outer Join 에서는 In 이나 Or 연산자를 허용하지 않습니다.
-- ANSI SQL Outer Join 을 이용하세요.
-- 그리고 반복되는 조건은 하나로 빼시는게 좋습니다.
SELECT *
FROM test t
LEFT OUTER JOIN test1 t1
ON t.d = t1.d
AND (t.a = t1.a OR t.b = t1.b OR t.c = t1.c)
;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.