두개의 테이블 합치기 쿼리 질문드립니다. 0 3 2,044

by 허진영 [2014.12.15 17:13:07]


안녕하세요..

 

초보 개발자 입니다. 

쿼리 관련해서 질문좀 드리고 싶습니다. 

답변 부탁드리겟씁니다 ㅠㅠ

 

두개의 테이블

1번테이블  

i1 a
i2 a
i3 b
i4 b

2번테이블

a b1
b b2
b b3
b b4

이런식으로 데이터가 존재 할때 

결과가 아래와 같이 나오개 하고 싶습니다 ㅠㅠ

a i1 b1
a i2  
b i3 b2
b i4 b3
b   b4

이런식으로 값을 구하고 싶습니다. i or b의 숫자의 순서는 상관없구요..

M:M 조인이다 보니 도저히 답이 나오지 않네요 ㅠㅠ

테이블 설계가 잘못된거는 알고 있습니다.... 똥치우는 거라서요 ㅠㅠ

 

답변 부탁드리겠습니다.

감사합니다.

by 허진영 [2014.12.15 17:16:10]

글작성자 입니다. 혹여 아래와 같이 데이터는 만들수 있는데 

a i1  
a i2  
a   b1
b i3  
b i4  
b   b2
b   b3
b   b4

이걸 ROW 압축(?) 할 수 있나요? ㅠㅠ


by DarkBee [2014.12.15 17:45:58]
WITH t1 AS 
(
    SELECT 'i1' a,	'a' b FROM DUAL UNION ALL
    SELECT 'i2' a,	'a' b FROM DUAL UNION ALL
    SELECT 'i3' a,	'b' b FROM DUAL UNION ALL
    SELECT 'i4' a,	'b' b FROM DUAL
)
, t2 AS
(
    SELECT 'a' b,	'b1' c FROM DUAL UNION ALL
    SELECT 'b' b,	'b2' c FROM DUAL UNION ALL
    SELECT 'b' b,	'b3' c FROM DUAL UNION ALL
    SELECT 'b' b,	'b4' c FROM DUAL
)
SELECT NVL ( t1.b, t2.b )
     , t1.a
     , t2.c
  FROM ( SELECT ROW_NUMBER () OVER ( PARTITION BY b ORDER BY a ) rn
              , b
              , a
           FROM t1 
       ) t1
  FULL OUTER JOIN
       ( SELECT ROW_NUMBER () OVER ( PARTITION BY b ORDER BY c ) rn
              , b
              , c
           FROM t2
       ) t2
    ON t1.b  = t2.b
   AND t1.rn = t2.rn
 ORDER BY 1, 2, 3

 


by 허진영 [2014.12.15 18:24:12]

DARKBEE님 정말 감사합니다. 

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