or 조건에서 아우터조인 0 3 1,257

by sm5 [SQL Query] [2014.01.02 21:33:26]


안녕하세요

*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() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입