スポンサーリンク

2007-12-30

Tips122 - 複数のテーブルを縦につなぐ UNION ALL

結合する2つのテーブル例
[M_顧客マスター]
顧客ID 名前
1  大木
2  石塚
3  南

[T_販売]
販売ID 顧客ID 商品名 数量
1   2   ソファー  2
2   5   ベッド   1

結合例
Dim SQL As String
Dim rs As Recordset
SQL = "SELECT M_顧客マスター.顧客ID , 名前 FROM M_顧客マスター UNION ALL SELECT T_販売.顧客ID , 商品名 FROM T_販売"
Set rs = CurrentDb.OpenRecordset(SQL)
これを実行すると、下記のデータが返ります。
1 大木
2 石塚
3 南
2 ソファー
5 ベッド
上から3レコードがM_顧客マスターの全レコード、次がT_販売の全レコードとなっています。
このように縦につながったことが分かります。

フィールド順を入れ替え、下記のようにデータ型が異なる順にした場合
SQL = "SELECT 名前 , M_顧客マスター.顧客ID FROM M_顧客マスター UNION ALL SELECT T_販売.顧客ID , 商品名 FROM T_販売"
大木 1
石塚 2
南 3
2 ソファー
5 ベッド
問題なく表示されます。