2011-07-19 21 views
4

一般的な列が約10ある複数の表がありますが、一部の表には1〜2列の余分な列があります。列数が多少異なる複数の表を結合する方法

これらの表をすべて1つの表に結合して、各表の各行ごとに1つの行を作成し、各特定の行のソース表に存在しなかった列のNULL値を使用したいとします。

だから私の入力はおおよそ次のようになります。

table1 
id | colA | colB 

table2 
id | colA | colB | colC 

table3 
id | colA | colB | colD 

そして、私はこれを取得しようとしています:TABLE1からすべての行がCOLCと寒さのためにNULL値を持つことになり、上記の例では

allTables 
id | colA | colB | colC | colD 

をallTablesでは、table2のすべての行にcolDのNULL値があり、table3のすべての行はcolCのNULL値を持ちます。

カップルノート:

  • 列IDが同じか
  • 私の例では、3つのテーブルを示してどのような方法でテーブル間の関連はありませんが、私はおよそ8-9を持っています。
  • 各ソーステーブル内に重複する行が存在するため、保存する必要があります。

特に、私が興味を持っているのは、トップに投票したものがhereなどと一般的になっているようなものです。あなたはUNIONを使用することができます

答えて

4
SELECT 
    id, 
    colA, 
    colB, 
    NULL AS colC, 
    NULL AS colD 
FROM 
    Table1 
UNION ALL 
SELECT 
    id, 
    colA, 
    colB, 
    colC, 
    NULL AS colD 
FROM 
    Table2 
UNION ALL 
SELECT 
    id, 
    colA, 
    colB, 
    NULL AS colC, 
    colD 
FROM 
    Table3 

IDは関連していないので、テーブル間に重複がある場合に、どのテーブルから行が来たのかを調べることもできます。これを行うには、3つのSELECTステートメントのそれぞれに異なる値を持つエイリアスを使用してハードコードされた値を設定するだけです。

+0

あなたの最後の部分にはColCがありません。 – Jacob

+0

ありがとうございました...今すぐ修正してください。 –

3

  SELECT id, colA, colB, null AS colC, null AS colD FROM table1 
UNION ALL SELECT id, colA, colB,   colC, null AS colD FROM table2 
UNION ALL SELECT id, colA, colB, null AS colC,   colD FROM table3; 

コメントで述べたように、あなたが別のテーブルの中から重複を破棄したい場合は、UNION/UNION DISTINCTでこれを変えることができます。コメント作成者に感謝します。

+0

あなたはUNION ALLとしたほうが良いかもしれません。そうでなければ私の投票を得ました。 – bobs

+0

UNIONは重複する行を失います。問題は、それが問題ないかどうかを特定するものではありませんが、指摘する必要があります。 –

+0

@Bobs:それはおそらく良いアイデアだ、編集された!ありがとうございます:-) –

3

あなたはこの試みることができる:あなたが必要なもの

SELECT id, colA, colB, NULL AS colc, NULL AS cold 
FROM table1 

UNION ALL 

SELECT id, colA, colB, colc, NULL AS cold 
FROM table2 

UNION ALL 

SELECT id, colA, colB, NULL AS colc, cold 
FROM table3 
0

UNIONです:

SELECT id, colA, colB, null as colC, null as colD 
FROM table1 
UNION 
SELECT id, colA, colB, colC, null as ColD 
FROM table2 
UNION 
SELECT id, colA, colB, null as colC, cold 
FROM table3 
関連する問題