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 해버렸습니다. ㅠㅠ
원래 이렇게들하는건가요? 좀 무식해보여서..
좋은 방법 있나해서 질문드립니다.
도움 바랍니다.
감사합니다~!!!
이런 경우를 뭐라고 부르는지도 알려주시면 감사하겠습니다. 무식해서.. ㅠㅠ
자답이에요..
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; ;
챙피하지만.. 안지우고 놔둘렵니다.
이정도 챙피해줘야 안잊어먹을거 같아요...