Accessには、複数のテーブルやクエリのレコードを結び付けて、1つのクエリにする[ユニオンクエリ]という機能があります。
ユニオンクエリは、さまざまな場面で利用できて便利なのですが、他のクエリのようにデザインビューで設定ができません。SQLビューを開いてSQL文を書き込まなければなりません。
ですから、難しく思われるかもしれませんが、ここではSQL言語を知らなくても簡単に作成できる方法を解説します。
ユニオンクエリは、知れば本当に便利な機能です。ぜひ使ってみてください。
ここでは、Access2019で解説しますが、他のバージョンでも同じ操作です。

2つのテーブルの確認
サンプルとして使用するテーブルです。
以下は、テーブル[Aグループ]とテーブル[Bグループ]のデータシートビューです。

以下は、テーブル[Aグループ]のデザインビューです。テーブル[Bグループ]も同じです。

参考ここでは、ドキュメントウィンドウオプションで、[ウィンドウを重ねて表示する]の設定にしています。[タブ付きドキュメント](既定)でも操作は同じです。
[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[重ねて表示]の違いと切り替え方法
Access 2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 以前からAccessを使っている方 ...
[Aグループ]と[Bグループ]のクエリを作成
テーブル[Aグループ]とテーブル[Bグループ]を結び付けて、1つのクエリを作成していきます。
ここでは2つのクエリを作成してから、ユニオンクエリを作成します。
本来は、テーブルをもとに2つのクエリを作成する必要はないのですが、分かりやすいように、あえてクエリを作成します。ユニオンクエリを作成した後は、2つのクエリは削除してもかまいません。
[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。
![[作成]タブの[クエリ]グループにある「クエリデザイン」](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union4.png)
[テーブルの表示]ダイアログボックスが表示されますので、[テーブル]タブから[Aグループ]を選択して[追加]ボタンをクリックします。
![[テーブルの表示]ダイアログボックス](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union5.png)
参考バージョンによって異なると思いますが、[作成]タブの[クエリデザイン]をクリックすると、Microsoft 365のAccessとAccess 2021では[テーブルの追加]作業ウィンドウとして表示されます。
クエリデザインの「テーブルの追加」は作業ウィンドウに表示される
デザイングリッドにフィールドを登録
クエリウィンドウにテーブル[Aグループ]のフィールドリストが表示されます。
ID以外のフィールドを選択して、デザイングリッドへドラッグして登録します。
テーブルのフィールドリストは、[Shift]キーを使うと連続した範囲を選択できます。また、フィールドリストをダブルクリックしても登録できます。

クエリを実行して確認してみます。
[デザイン]タブの[結果]グループにある[表示]ボタンをクリックします。または、[実行]ボタンをクリックします。
![[デザイン]タブの[結果]グループにある[表示]ボタン](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union10.png)
クエリのデータシートビューは、以下のようになっています。

参考クエリは、[選択クエリウイザード]を使用して作成しても構いません。
クエリに名前を付けて保存
クエリに名前を付けて保存します。
[F12]キーを押すと、[名前を付けて保存]ダイアログボックスが表示されます。
[クエリ1]のテキストボックスに、分かりやすい名前を付けて保存します。ここでは[クエリ_A]としておきます。
![[名前を付けて保存]ダイアログボックス](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union7.png)
同様にテーブル[Bグループ]も同じフィールドを登録して[クエリ_B]を作成して保存します。
ナビゲーションウィンドウには、以下のように2つのクエリが保存されます。

ユニオンクエリの作成
[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。
![[作成]タブの[クエリ]グループにある[クエリデザイン]](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union12.png)
[テーブルの表示]ダイアログボックスが表示されますが、[閉じる]ボタンで閉じます。
Access2021以降は、[テーブルの表示]は、ウィンドウの右側に表示されます。
![[テーブルの表示]ダイアログボックス](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union13.png)
[デザイン]タブの[クエリの種類]グループにある[ユニオン]をクリックします。
![[デザイン]タブの[クエリの種類]グウr-プにある[ユニオン]](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union14.png)
SQLビューが表示されます。
[表示]ボタンをクリックすると、[SQLビュー]が選択されているのが確認できます。
ここにSQL言語を書き込んでいくわけです。
でも、SQLを知らなくても大丈夫です。
ユニオンクエリのSQLビューは、開いたままにしておきます。

参考クエリには3つのビューがあります。
- データシートビュー
クエリの種類によっては、テーブルにデータの表示と入力ができます。 - デザインビュー
クエリを設計します。表示するフィールドや抽出条件などさまざまな設定を行うことができます。 - SQLビュー
SQLと呼ばれるデータベース用のプログラミング言語で入力してクエリの定義を行います。
SQLビューなどのフォントサイズが小さくて見づらい場合は、フォントサイズを大きくすると見やすくなります。
-
クエリデザインとデータシートビューのフォントサイズを変更
Accessのクエリデザインとデータシートビューのフォントサイズを変更する方法です。 大きく表示したいと思う方も多いのではないでしょうか?オ ...
Microsoft 365のAccessのSQLビューは、インテリセンス機能が強化されています。

[クエリ_A]をSQLビューで開いてSQL文をコピーして貼り付け
クエリ[クエリ_A]をデザインビューで開きます。
[デザイン]タブの[結果]グループにある[表示]ボタンの下方(文字の部分)をクリックして、[SQLビュー]をクリックします。
![[デザイン]タブの[表示]で[SQLビュー]を選択](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union16.png)
以下のようにSQL文が表示されます。

このままコピーします。ここでは、右クリックしてショートカットメニューから[コピー]をクリックします。

クエリ[クエリ_A]は、閉じます。
ユニオンクエリに貼り付けします。

[UNION]と入力
貼り付けたSQL文に続けて、[UNION]と入力します。これだけは入力してください。
UNION
UNIONとは、英語で「結合」という意味です。
分かりやすくするために、ここでは改行していますが、しなくても構いません。
ユニオンクエリはSQLビューのまま表示しておきます。
![SQL文に続けて[UNION]と入力](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union21.png)
[クエリ_B]をSQLビューで開いてSQL文をコピーして貼り付け
クエリ[クエリ_B]も同様に、デザインビューで開いて、SQLビューを表示して、SQL文をコピーします。
クエリ[クエリ_B]は閉じます。

そして、ユニオンクエリに貼り付けます。
以下のようになります。

ユニオンクエリを確認して名前を付けて保存
[結果]グループにある[表示]ボタンをクリックして、データシートビューで結合できているかを確認します。

以下のようになります。

[F12]キーを押して[名前を付けて保存]ダイアログボックスを表示します。
ここでは、[グループ結合]という名前を付けて保存します。
![[名前を付けて保存]ダイアログボックス](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union26.png)
ナビゲーションウィンドウには、以下のようなアイコンが表示されます。これがユニオンクエリです。

参考ユニオンクエリを作成した後、クエリ[クエリ_A]と[クエリ_B]は不要であれば、削除しても構いません。
ここでは、分かりやすくするために、クエリを作成し保存した後、SQLビューを表示してコピー&ペースという手順を紹介しましたが、慣れた方なら、クエリは保存しなくても、SQL文のみをクリップボードにコピーすればいいと思います。
ユニオンクエリを作成するには、結合するフィールド数は、同じでなければなりません。
フィールド名は同じでなくても構いません。その場合、最初のテーブルのフィールド名が使用されます。
データ型が異なっても作成できますが、表示が意図しないものになる場合もあるので、できれば揃えておいたほうがいいと思います。

結合するフィールド数が多すぎると作成できないことがあります。以下のメッセージウィンドウが表示されます。
定義されているフィールドが多すぎます。
![[定義されているフィールドが多すぎます。]メッセージウィンドウ](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union48.png)
ユニオンクエリの特徴
ユニオンクエリは、普通のクエリのように、レコードの修正や削除はできません。

テーブルのレコードの値が修正されたら、それは反映されます。
以下は、テーブル[Aグループ]で「もりや」を「もりたに」に修正しています。
もちろん、テーブルのレコードが追加されたり、削除されても反映されます。

ユニオンクエリを修正する場合は、SQLビューを開いて修正します。
[UNION]と[UNION ALL]の違い
テーブル[Aグループ]と[Bグループ]に同じレコードがあります。

[UNION ALL]で結ぶと、重複レコードがあっても、そのまま表示されます。
2つのテーブルを[UNION ALL]で結びます。重複レコードは、そのまま表示されます。
![2つのテーブルを[UNION ALL]で結ぶ](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union39.png)

[UNION]で結ぶと、重複レコードは排除されます。
![2つのテーブルを[UNION]で結ぶ](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union41.png)

参考[UNION]や[UNION ALL]で複数のテーブルやクエリを結合していくことができます。以下は3つのテーブルを[UNION]で結んでいます。
![3つのテーブルを[UNION]で結合](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union43.png)
さまざまなクエリでSQL文を参照
ユニオンクエリを作成する場合、デザインビューでの設定はできませんが、クエリでSQL文をコピーできれば簡単に作成できるというわけです。
すべてのフィールドを結合したい場合
同じフィールド数の複数のテーブルがあって、テーブルのすべてのフィールドを結合したい場合は、クエリで以下のようにフィールドリストの[*]をデザイングリッドに登録します。
![フィールドリストの[*]をデザイングリッドに登録](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union30.png)
この状態でSQLビューを確認すると、以下のように表示されます。

上記のSQL文をコピーして、ユニオンクエリに貼り付けします。
結合したいテーブルも同様に操作して、SQL文をコピーして貼り付けします。
短いSQL文で見やすいと思います。

ユニオンクエリを表示すると、以下のようにすべてのフィールドが結合されたものになります。

作成済みのクエリを使ってSQL文を参照
すでに作成済みのクエリがあって、そのクエリをもとにSQL文を参照しても構いません。
[名前]フィールドのみを結合したいのであれば、クエリのデザイングリッドで[名前]フィールド以外のフィールドの[表示]のチェックボックスをオフにします。

そして、SQLビューに切り替えると、以下のようになっています。

上記のSQL文をコピーして、ユニオンクエリに貼り付けします。
結合したいテーブルも同様に操作して、SQL文をコピーして貼り付けします。

ユニオンクエリを表示すると、以下のように名前フィールドのみが結合されたものになります。

異なるフィールドを結合することもできます。ただ、フィールド数は同じでなければいけません。
抽出条件を追加してユニオンクエリを作成
例えば、テーブル[グループA]の[青森県]のレコードと、テーブル[グループB]の[愛知県]のレコードを結合したいということもできます。
以下のように各クエリで[抽出条件]を指定して、SQL文をコピーしてユニオンクエリを作成します。

ユニオンクエリのSQLビューは、以下のようになります。

データシートビューで表示すると、以下のようになります。

参考SQLステートメントをすべてコピーして、フォームやレポートの[レコードソース]へ貼り付けすると、クエリを削除できます。
-
フォームとレポートのソースをSQLに置き換えてクエリを削除
Accessでデータベースを作成していると、クエリが増えすぎて管理が大変だなぁと思うことはありませんか? クエリを基にフォームやレポートを作 ...
ユニオンクエリからテーブルを作成するには
ユニオンクエリを作成したら、そのクエリをそのままテーブルにしたいと思うこともあるかと思います。
[テーブル作成クエリ]を使って作成できます。
[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。
![[作成]タブの[クエリ]グループにある「クエリデザイン」](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union4.png)
[テーブルの表示]ダイアログボックスが表示されますので、[クエリ]タブから[グループ結合]を選択して[追加]ボタンをクリックします。
クエリを追加したら、[テーブルの表示]ダイアログボックスは[閉じる」ボタンで閉じます。
![[テーブルの表示]ダイアログボックス](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union49.png)
フィールドリストから、[*]をデザイングリッドへドラッグします。すべてのフィールドを選択しているということになります。

[デザイン]タブの[クエリの種類]グループにある[テーブルの作成]ボタンをクリックします。
[テーブルの作成]の[テーブル名]のテキストボックスに、テーブル名を入力して[OK]ボタンをクリックします。
![[テーブルの作成]ダイアログボックス](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union51-e1724393787326.png)
[デザイン]タブの[結果]グループにある[表示]ボタンをクリックして、作成されるテーブルを確認します。
![[デザイン]タブの[結果]グループにある[表示]ボタン](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union53.png)
ここでは、以下のようなデータシートビューが表示されます。

問題がなければ、[実行]ボタンをクリックします。
メッセージウィンドウも表示されますので、[はい]をクリックします。
![[テーブルの作成]クエリを実行](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union56.png)
ナビゲーションウィンドウに新規テーブル[全名簿]が表示されていて、作成されたことが分かります。

テーブル作成クエリは、必要であれば保存しておきます。
キーボードから[F12]キーを押すと、[名前を付けて保存]ダイアログボックスが表示されます。
テキストボックスに分かりやすい名前を付けて、[OK]ボタンをクリックします。
![[名前を付けて保存]ダイアログボックス](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union58.png)
ナビゲーションウィンドウのアイコンは以下のように表示されます。
![ナビゲーションウィンドウの[テーブルの作成]クエリ](https://hamachan.info/WordPress2019/wp-content/uploads/2020/08/union59.png)
アクションクエリは、ダブルクリックすると実行されますので気をつけてください。
参考テーブル作成クエリについては、以下の記事でも解説しています。
-
グループ化で重複レコードを削除したテーブルを作成
Accessで、1つのテーブルで重複したレコードを削除してマスターテーブルを作成する方法です。 クエリでグループ化を設定して重複レコードがな ...
-
氏名を姓と名のフィールドに分けるクエリを作成してテーブルを作成
テーブルに姓と名が[スペース]で分けられている[氏名]フィールドがあります。 これをクエリで[姓]と[名]のフィールドに分ける方法を紹介しま ...
テーブルを結合するには、[追加クエリ]を使う方法もあります。
-
追加クエリの作成方法(追加先テーブルのフィールドへ特定の値を表示)
1つのテーブルに別のテーブルのレコードを追加する方法です。 3個テーブルがあって、各テーブルのフィールド名は同じです。 ここでは例として、テ ...