asaworks

自分の技術備忘録と雑談

【Access】ユニオンクエリで構造の違うテーブルを結合する

f:id:asa-works:20161013113815p:plain

Access】ユニオンクエリで構造の違うテーブルを結合する

以下のような構造の違うテーブルをユニオンクエリで結合する方法

※データは架空の人物のデータです。

f:id:asa-works:20170713171424j:plain

f:id:asa-works:20170713171435j:plain

両テーブルに同じ列が存在しなければならない為、存在しない列を「NULL」で補います。

 

念のためUNIONとUNION ALLのおさらい
UNION → 重複行を除外
UNION ALL → テーブルを上から順に結合(下の文だと結果の並びがT1↓T2の並びになる)

重複チェックが発生しない分、UNION ALLのほうが処理が早い

 

列名は1番目のテーブルSELECTからもってくるので「NULL as 列名」で列名をつけてあげないと「Exprxxxx」になってしまいます。

以下、UNIONとUNION ALLのSQL文と結果

SELECT T1.Name,T1.Name_furi,T1.Mail,T1.TEL,T1.Keiyaku,NULL as curry
FROM T_Renraku as T1
UNION
Select T2.Name, T2.Name_furi,NULL,NULL,NULL,T2.curry
FROM T_curry as T2;

f:id:asa-works:20170713171710j:plain

SELECT T1.Name,T1.Name_furi,T1.Mail,T1.TEL,T1.Keiyaku,NULL as curry
FROM T_Renraku as T1
UNION ALL
Select T2.Name, T2.Name_furi,NULL,NULL,NULL,T2.curry
FROM T_curry as T2;

f:id:asa-works:20170713171749j:plain