2014-07-12 168 views
0

我有三個表,假設合併三個表共同的列合併到一列

表1


  1. ID
  2. DDOCode
  3. DesignationCode
  4. 指定

表2


  1. ID
  2. DDOCode
  3. DesignationCode
  4. BPS
  5. 指定

表3


  1. ID
  2. DDOCode
  3. DesignationCode
  4. BPS
  5. 指定

這看起來很奇怪,有三種表相同的字段,但有是一種情況我必須將三個表合併成一個,我主要關注的是指定和BPS,我想要使用查詢或存儲過程合併到一個表中,但我無法應用左外連接,右外連接,也沒有內連接因爲我想從所有三個表中的所有值,我認爲會有一個存儲過程,可以解決我的問題。

請在這方面協助我。

回答

0

您可以用union allgroup byfull outer join這樣做。因爲你有兩個以上的表格,union all實際上更容易。你是對最終結果尚不清楚,所以這可能是足夠的:

select id, DDOCode, DesignationCode, BPS, Designation 
from ((select id, DDOCode, DesignationCode, NULL as BPS, Designation 
     from table1 
    ) union all 
     (select id, DDOCode, DesignationCode, BPS, Designation 
     from table2 
    ) union all 
     (select id, DDOCode, DesignationCode, NULL as BPS, Designation 
     from table3 
    ) 
    ) t123 

爲了您的精緻問題:

select distinct DDOCode,DesignationCode, Designation 
from ((select id, DDOCode, DesignationCode, NULL as BPS, Designation 
     from table1 
    ) union all 
     (select id, DDOCode, DesignationCode, BPS, Designation 
     from table2 
    ) union all 
     (select id, DDOCode, DesignationCode, NULL as BPS, Designation 
     from table3 
    ) 
    ) t123; 
+0

我也想補充一點,所有的值必須是不同的,我的最終結果是隻有三個colums,I-E DDOCode,BPS,並指定 –

+0

@KhuramJan。 。 。您的評論不清楚。哪些值?那是在把桌子放在一起之前還是之後? –

+0

我也想添加一點,所有的值必須是不同的,我的最終結果是隻有三個colums,i-e DDOCode,BPS和指定 –

0

您可以使用UNION合併所有表和不丟失任何行和秀他們在一個安全的觀點。如果你想讓他們進入另一張桌子,你也可以插入。

CREATE VIEW view_name AS(
    SELECT * FROM TABLE1 
    UNION 
    SELECT * FROM TABLE2 
    UNION 
    SELECT * FROM TABLE3)