2016-09-22 2 views
0

2 개 테이블을 조인 :내가 특별한 방법으로 SQL 2 개 테이블을 조인해야 SQL

TABLE1은 필드 그룹과 회원을 가지고, TABLE2는 필드 그룹과 MASTER 있습니다. TABLE1을 TABLE3에 복사하고 TABLE1에서 GROUP이있는 경우 TABLE2를 검색하고 GROUP 및 MASTER를 TABLE3에 복사하여 GROUP 및 ID 필드가있는 새 TABLE3을 빌드해야합니다.

예 :

table1 :

group member 
1  a 
1  b 
1  c 
2  x 
3  y 

table2 :

group master 
3  n 
3  z 
1  k 
9  v 
2  m 
7  o 
8  p 

예상 결과, 표 3 :

group id 
1  a  from table1 
1  b  from table1 
1  c  from table1 
1  k  from table2 
2  x  from table1 
2  m  from table2 
3  y  from table1 
3  z  from table2 
3  n  from table2 

나는 everyth 희망 고맙습니다.

그럼 SQL 쿼리 란 무엇입니까?

감사합니다, 하인

+0

"노동 조합"을 살펴보십시오. –

+1

어떤 DBMS를 사용하고 있습니까? –

답변

0

첫 번째 부분 (사본 회원) 쉬워야한다 :

다음
INSERT INTO table3 (group, id) SELECT group, member FROM table1; 

당신은 단지 table1 이미 존재하는 그룹에있는 주인을 복사 :

INSERT INTO table3 (group, id) SELECT group, master FROM table2 WHERE group IN (SELECT DISTINCT group FROM table1); 
+2

하위 쿼리에서 해당 DISTINCT 필요가 없습니다. – jarlh

0

시험해보세요. 물론 전체 선택 영역을 Table3이라는 새 테이블에 INSERT해야합니다.

INSERT INTO table3(group,id) 
SELECT group,id FROM table1 
UNION ALL 
SELECT group,id FROM table2 
SELECT * FROM table3; 

을 그리고 당신은 중복 값을 원하지 않는 경우,이 UNION 대신 UNION ALL 사용하여 시도 :

WITH TABLE1(GRP,MMBR) AS 
(SELECT 1, 'a' FROM DUAL UNION ALL 
    SELECT 1, 'b' FROM DUAL UNION ALL 
    SELECT 1, 'c' FROM DUAL UNION ALL 
    SELECT 2, 'x' FROM DUAL UNION ALL 
    SELECT 3, 'y' FROM DUAL), 
TABLE2(GRP,MSTR) AS 
(SELECT 3, 'n' FROM DUAL UNION ALL 
    SELECT 3, 'z' FROM DUAL UNION ALL 
    SELECT 1, 'k' FROM DUAL UNION ALL 
    SELECT 9, 'v' FROM DUAL UNION ALL 
    SELECT 2, 'm' FROM DUAL UNION ALL 
    SELECT 7, 'o' FROM DUAL UNION ALL 
    SELECT 8, 'p' FROM DUAL) 

SELECT * FROM (
    SELECT GRP, MMBR ID FROM TABLE1 

    UNION --UNION ALL if you need duplicates 

    SELECT GRP, MSTR ID FROM TABLE2 
    WHERE TABLE2.GRP IN (SELECT GRP FROM TABLE1) 
) 
    ORDER BY GRP, ID 
0

당신은 다음과 같이 INSERTUNION ALL 2 간단한 SELECT를 사용하여 수행 할 수

INSERT INTO table3(group,id) 
SELECT group,id FROM table1 
UNION 
SELECT group,id FROM table2 
SELECT * FROM table3; 
관련 문제