조인 질문드립니다.-답변완료 0 3 7,739

by 커피요쿠르트d [SQL Query] 오라클 조인 oracle join outer join full outer join [2015.06.09 16:53:51]


수고하십니다.

조인 문제 좀 질문드립니다.

두 테이블을 조인하는데 양쪽에 값이 있는 경우, 없는 경우 모두 조회 하고 싶습니다.

with tbl1 as(
    select '01' code, 'testaa' name from dual union all
    select '02' code, 'testtt' name from dual union all
    select '03' code, 'testdd' name from dual 
)
select * from tbl1 ;
with tbl2 as(
    select '01' code2, 'dummy testsss' name2 from dual union all
    select '02' code2, 'dummy testasd' name2 from dual union all
    select '04' code2, 'dummy test333' name2 from dual
)
select * from tbl2 ;

2개의 테이블입니다.
code와 code2를 보면
01,02는 양 테이블에 존재하고
03, 04는 각각 테이블에만 존재합니다.

모두 조회 하고 싶습니다.
그럼 어떻게 조인을 해야할까요?
아래 제가 원하는 결과입니다.

with tbl1 as(
    select '01' code, 'testaa' name from dual union all
    select '02' code, 'testtt' name from dual union all
    select '03' code, 'testdd' name from dual 
), tbl2 as(
    select '01' code2, 'dummy testsss' name2 from dual union all
    select '02' code2, 'dummy testasd' name2 from dual union all
    select '04' code2, 'dummy test333' name2 from dual
)
select * from tbl1 a, tbl2 b
where a.code = b.code2(+)
union
select * from tbl1 a, tbl2 b
where a.code(+) = b.code2
;

--각각 아우터조인을하고 union 해버렸습니다. ㅠㅠ
원래 이렇게들하는건가요? 좀 무식해보여서..
좋은 방법 있나해서 질문드립니다.
도움 바랍니다.
감사합니다~!!!

 

이런 경우를 뭐라고 부르는지도 알려주시면 감사하겠습니다. 무식해서.. ㅠㅠ

by 커피요쿠르트d [2015.06.09 16:55:52]

위와 같은 경우를 뭐라고 하나요?
검색을 해도.. 도통 못찾겠어요. 힝..


by 커피요쿠르트d [2015.06.09 16:59:21]

자답이에요..
full outer join 이네요;;;
전에 공부할 때는 이게 왜 안보였는지. ㅠㅠ



with tbl1 as(
    select '01' code, 'testaa' name from dual union all
    select '02' code, 'testtt' name from dual union all
    select '03' code, 'testdd' name from dual 
), tbl2 as(
    select '01' code2, 'dummy testsss' name2 from dual union all
    select '02' code2, 'dummy testasd' name2 from dual union all
    select '04' code2, 'dummy test333' name2 from dual
)
SELECT *
  FROM tbl1 e 
  FULL OUTER JOIN tbl2 d
    ON e.code = d.code2;
;

 


챙피하지만.. 안지우고 놔둘렵니다.

이정도 챙피해줘야 안잊어먹을거 같아요...

 

 


by 겸댕2후니 [2015.06.09 17:17:47]

위의 질문과 관련이 없는 내용이지만,

대용량 환경에서는 Outer Join 사용시

플랜꼭 확인하시고, 해당쿼리 성능 꼭 확인하시면 좋을 것 같습니다.

Outer Join의 경우 Driving 테이블이 고정되므로, Plan이 비효율적으로

풀리는 경우가 많이 있습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입