Accessには、複数のテーブルやクエリのレコードを結び付けて、1つのクエリにする[ユニオンクエリ]という機能があります。
ユニオンクエリは、さまざまな場面で利用できて便利なのですが、他のクエリのようにデザインビューで設定ができません。SQLビューを開いてSQL文を書き込まなければなりません。
ですから、難しく思われるかもしれませんが、ここではSQL言語を知らなくても簡単に作成できる方法を解説します。
ユニオンクエリは、知れば本当に便利な機能です。ぜひ使ってみてください。
ここでは、Access2019で解説しますが、他のバージョンでも同じ操作です。
この記事の目次
2つのテーブルの確認
サンプルとして使用するテーブルです。
以下は、テーブル[Aグループ]とテーブル[Bグループ]のデータシートビューです。
以下は、テーブル[Aグループ]のデザインビューです。テーブル[Bグループ]も同じです。
参考ここでは、ドキュメントウィンドウオプションで、[ウィンドウを重ねて表示する]の設定にしています。[タブ付きドキュメント](既定)でも操作は同じです。
[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
[Aグループ]と[Bグループ]のクエリを作成
テーブル[Aグループ]とテーブル[Bグループ]を結び付けて、1つのクエリを作成していきます。
ここでは2つのクエリを作成してから、ユニオンクエリを作成します。
本来は、テーブルをもとに2つのクエリを作成する必要はないのですが、分かりやすいように、あえてクエリを作成します。ユニオンクエリを作成した後は、2つのクエリは削除してもかまいません。
[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。
[テーブルの表示]ダイアログボックスが表示されますので、[テーブル]タブから[Aグループ]を選択して[追加]ボタンをクリックします。
参考バージョンによって異なると思いますが、[作成]タブの[クエリデザイン]をクリックすると、Microsoft 365のAccessとAccess 2021では[テーブルの追加]作業ウィンドウとして表示されます。
クエリデザインの「テーブルの追加」は作業ウィンドウに表示される
デザイングリッドにフィールドを登録
クエリウィンドウにテーブル[Aグループ]のフィールドリストが表示されます。
ID以外のフィールドを選択して、デザイングリッドへドラッグして登録します。
テーブルのフィールドリストは、[Shift]キーを使うと連続した範囲を選択できます。また、フィールドリストをダブルクリックしても登録できます。
クエリを実行して確認してみます。
[デザイン]タブの[結果]グループにある[表示]ボタンをクリックします。または、[実行]ボタンをクリックします。
クエリのデータシートビューは、以下のようになっています。
参考クエリは、[選択クエリウイザード]を使用して作成しても構いません。
クエリに名前を付けて保存
クエリに名前を付けて保存します。
[F12]キーを押すと、[名前を付けて保存]ダイアログボックスが表示されます。
[クエリ1]のテキストボックスに、分かりやすい名前を付けて保存します。ここでは[クエリ_A]としておきます。
同様にテーブル[Bグループ]も同じフィールドを登録して[クエリ_B]を作成して保存します。
ナビゲーションウィンドウには、以下のように2つのクエリが保存されます。
ユニオンクエリの作成
[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。
[テーブルの表示]ダイアログボックスが表示されますが、[閉じる]ボタンで閉じます。
[デザイン]タブの[クエリの種類]グループにある[ユニオン]をクリックします。
SQLビューが表示されます。
[表示]ボタンをクリックすると、[SQLビュー]が選択されているのが確認できます。
ここにSQL言語を書き込んでいくわけです。
でも、SQLを知らなくても大丈夫です。
ユニオンクエリのSQLビューは、開いたままにしておきます。
参考クエリには3つのビューがあります。
- データシートビュー
クエリの種類によっては、テーブルにデータの表示と入力ができます。 - デザインビュー
クエリを設計します。表示するフィールドや抽出条件などさまざまな設定を行うことができます。 - SQLビュー
SQLと呼ばれるデータベース用のプログラミング言語で入力してクエリの定義を行います。
SQLビューなどのフォントサイズが小さくて見づらい場合は、フォントサイズを大きくすると見やすくなります。
-
クエリデザインとデータシートビューのフォントサイズを変更
Accessのクエリデザインとデータシートビューのフォントサイズを変更する方法です。 大きく表示したいと思う方も多いのではないでしょうか?オ ...
Microsoft 365のAccessのSQLビューは、インテリセンス機能が強化されています。
[クエリ_A]をSQLビューで開いてSQL文をコピーして貼り付け
クエリ[クエリ_A]をデザインビューで開きます。
[デザイン]タブの[結果]グループにある[表示]ボタンの下方(文字の部分)をクリックして、[SQLビュー]をクリックします。
以下のようにSQL文が表示されます。
このままコピーします。ここでは、右クリックしてショートカットメニューから[コピー]をクリックします。
クエリ[クエリ_A]は、閉じます。
ユニオンクエリに貼り付けします。
[UNION]と入力
貼り付けたSQL文に続けて、[UNION]と入力します。これだけは入力してください。
UNION
UNIONとは、英語で「結合」という意味です。
分かりやすくするために、ここでは改行していますが、しなくても構いません。
ユニオンクエリはSQLビューのまま表示しておきます。
[クエリ_B]をSQLビューで開いてSQL文をコピーして貼り付け
クエリ[クエリ_B]も同様に、デザインビューで開いて、SQLビューを表示して、SQL文をコピーします。
クエリ[クエリ_B]は閉じます。
そして、ユニオンクエリに貼り付けます。
以下のようになります。
ユニオンクエリを確認して名前を付けて保存
[結果]グループにある[表示]ボタンをクリックして、データシートビューで結合できているかを確認します。
以下のようになります。
[F12]キーを押して[名前を付けて保存]ダイアログボックスを表示します。
ここでは、[グループ結合]という名前を付けて保存します。
ナビゲーションウィンドウには、以下のようなアイコンが表示されます。これがユニオンクエリです。
参考ユニオンクエリを作成した後、クエリ[クエリ_A]と[クエリ_B]は不要であれば、削除しても構いません。
ここでは、分かりやすくするために、クエリを作成し保存した後、SQLビューを表示してコピー&ペースという手順を紹介しましたが、慣れた方なら、クエリは保存しなくても、SQL文のみをクリップボードにコピーすればいいと思います。
ユニオンクエリを作成するには、結合するフィールド数は、同じでなければなりません。
フィールド名は同じでなくても構いません。その場合、最初のテーブルのフィールド名が使用されます。
データ型が異なっても作成できますが、表示が意図しないものになる場合もあるので、できれば揃えておいたほうがいいと思います。
結合するフィールド数が多すぎると作成できないことがあります。以下のメッセージウィンドウが表示されます。
定義されているフィールドが多すぎます。
ユニオンクエリの特徴
ユニオンクエリは、普通のクエリのように、レコードの修正や削除はできません。
テーブルのレコードの値が修正されたら、それは反映されます。
以下は、テーブル[Aグループ]で「もりや」を「もりたに」に修正しています。
もちろん、テーブルのレコードが追加されたり、削除されても反映されます。
ユニオンクエリを修正する場合は、SQLビューを開いて修正します。
[UNION]と[UNION ALL]の違い
テーブル[Aグループ]と[Bグループ]に同じレコードがあります。
[UNION ALL]で結ぶと、重複レコードがあっても、そのまま表示されます。
2つのテーブルを[UNION ALL]で結びます。重複レコードは、そのまま表示されます。
[UNION]で結ぶと、重複レコードは排除されます。
参考[UNION]や[UNION ALL]で複数のテーブルやクエリを結合していくことができます。以下は3つのテーブルを[UNION]で結んでいます。
さまざまなクエリでSQL文を参照
ユニオンクエリを作成する場合、デザインビューでの設定はできませんが、クエリでSQL文をコピーできれば簡単に作成できるというわけです。
すべてのフィールドを結合したい場合
同じフィールド数の複数のテーブルがあって、テーブルのすべてのフィールドを結合したい場合は、クエリで以下のようにフィールドリストの[*]をデザイングリッドに登録します。
この状態でSQLビューを確認すると、以下のように表示されます。
上記のSQL文をコピーして、ユニオンクエリに貼り付けします。
結合したいテーブルも同様に操作して、SQL文をコピーして貼り付けします。
短いSQL文で見やすいと思います。
ユニオンクエリを表示すると、以下のようにすべてのフィールドが結合されたものになります。
作成済みのクエリを使ってSQL文を参照
すでに作成済みのクエリがあって、そのクエリをもとにSQL文を参照しても構いません。
[名前]フィールドのみを結合したいのであれば、クエリのデザイングリッドで[名前]フィールド以外のフィールドの[表示]のチェックボックスをオフにします。
そして、SQLビューに切り替えると、以下のようになっています。
上記のSQL文をコピーして、ユニオンクエリに貼り付けします。
結合したいテーブルも同様に操作して、SQL文をコピーして貼り付けします。
ユニオンクエリを表示すると、以下のように名前フィールドのみが結合されたものになります。
異なるフィールドを結合することもできます。ただ、フィールド数は同じでなければいけません。
抽出条件を追加してユニオンクエリを作成
例えば、テーブル[グループA]の[青森県]のレコードと、テーブル[グループB]の[愛知県]のレコードを結合したいということもできます。
以下のように各クエリで[抽出条件]を指定して、SQL文をコピーしてユニオンクエリを作成します。
ユニオンクエリのSQLビューは、以下のようになります。
データシートビューで表示すると、以下のようになります。
ユニオンクエリからテーブルを作成するには
ユニオンクエリを作成したら、そのクエリをそのままテーブルにしたいと思うこともあるかと思います。
[テーブル作成クエリ]を使って作成できます。
[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。
[テーブルの表示]ダイアログボックスが表示されますので、[クエリ]タブから[グループ結合]を選択して[追加]ボタンをクリックします。
クエリを追加したら、[テーブルの表示]ダイアログボックスは[閉じる」ボタンで閉じます。
フィールドリストから、[*]をデザイングリッドへドラッグします。すべてのフィールドを選択しているということになります。
[デザイン]タブの[クエリの種類]グループにある[テーブルの作成]ボタンをクリックします。
[テーブルの作成]の[テーブル名]のテキストボックスに、テーブル名を入力して[OK]ボタンをクリックします。
[デザイン]タブの[結果]グループにある[表示]ボタンをクリックして、作成されるテーブルを確認します。
ここでは、以下のようなデータシートビューが表示されます。
問題がなければ、[実行]ボタンをクリックします。
メッセージウィンドウも表示されますので、[はい]をクリックします。
ナビゲーションウィンドウに新規テーブル[全名簿]が表示されていて、作成されたことが分かります。
テーブル作成クエリは、必要であれば保存しておきます。
キーボードから[F12]キーを押すと、[名前を付けて保存]ダイアログボックスが表示されます。
テキストボックスに分かりやすい名前を付けて、[OK]ボタンをクリックします。
ナビゲーションウィンドウのアイコンは以下のように表示されます。
アクションクエリは、ダブルクリックすると実行されますので気をつけてください。
参考テーブル作成クエリについては、以下の記事でも解説しています。
-
グループ化で重複レコードを削除したテーブルを作成
Accessで、1つのテーブルで重複したレコードを削除してマスターテーブルを作成する方法です。 クエリでグループ化を設定して重複レコードがな ...
-
氏名を姓と名のフィールドに分けるクエリを作成して新規テーブルへ
1つのテーブルに姓と名が[スペース]で分けられている[氏名]フィールドがあります。 これをクエリで[姓]と[名]のフィールドに分ける方法を紹 ...
テーブルを結合するには、[追加クエリ]を使う方法もあります。
-
追加クエリの作成方法(追加先テーブルのフィールドへ特定の値を表示)
1つのテーブルに別のテーブルのレコードを追加する方法です。 3個テーブルがあって、各テーブルのフィールド名は同じです。 ここでは例として、テ ...