スポンサーリンク

2008-01-02

Tips123 - 重複レコードは除き複数のテーブルを縦につなぐ UNION

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

[T_2008年顧客データ]
顧客ID 名前
1  結城
2  石塚
3  岡村

●UNION ALL での結合例
Dim SQL As String
Dim rs As Recordset
SQL = "SELECT T_2008年顧客データ.名前,T_2008年顧客データ.顧客ID FROM T_2008年顧客データ UNION ALL SELECT T_2007年顧客データ.名前,T_2007年顧客データ.顧客ID FROM T_2007年顧客データ"
Set rs = CurrentDb.OpenRecordset(SQL)
これを実行すると、下記のデータが返ります。
結城 1
石塚 2
岡村 3
大木 1
石塚 2
南 3
縦につながっていますが、「石塚」さんのレコードが2件あります。

●UNION での結合例
Dim SQL As String
Dim rs As Recordset
SQL = "SELECT T_2008年顧客データ.名前,T_2008年顧客データ.顧客ID FROM T_2008年顧客データ UNION SELECT T_2007年顧客データ.名前,T_2007年顧客データ.顧客ID FROM T_2007年顧客データ"
Set rs = CurrentDb.OpenRecordset(SQL)
これを実行すると、下記のデータが返ります。
結城 1
石塚 2
岡村 3
大木 1
南 3
「石塚」さんのレコードが1件になっていて、重複レコードが除外されているのが分かります。