by 커피요쿠르트d [SQL Query] 오라클 조인 oracle join outer join full outer join [2015.06.09 16:53:51]
수고하십니다.
조인 문제 좀 질문드립니다.
두 테이블을 조인하는데 양쪽에 값이 있는 경우, 없는 경우 모두 조회 하고 싶습니다.
1 2 3 4 5 6 | 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 ; |
1 2 3 4 5 6 | 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는 각각 테이블에만 존재합니다.
모두 조회 하고 싶습니다.
그럼 어떻게 조인을 해야할까요?
아래 제가 원하는 결과입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 이네요;;;
전에 공부할 때는 이게 왜 안보였는지. ㅠㅠ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; ; |
챙피하지만.. 안지우고 놔둘렵니다.
이정도 챙피해줘야 안잊어먹을거 같아요...