データベースの運用を続ける中では、似たようなフィールドのテーブルを構築し、管理するケースがあります。選択クエリでは、複数のテーブルやクエリを結合して「列=フィールド」を繋げていき、これらを一覧表示することができますが、一方で「行=レコード」を繋げる、つまり、2つ以上のテーブルやクエリを用意し、レコードを一覧で表示させるにはどうすれば良いでしょうか。
こういった場合に、「ユニオンクエリ」を用いることができます。そこで今回は、ユニオンクエリについて説明をし、その後作成方法を紹介します。
ユニオンクエリの考え方
選択クエリとユニオンクエリで表示される結果のイメージは、図1に示すとおりです。
図で示すように複数のテーブルを足してレコードを一覧で表示する機能がユニオンクエリとなります。
それでは、ユニオンクエリの作成例として、「T_従業員1」テーブルと「T_従業員2」テーブルを一覧で表示する方法を紹介します。
サンプルデータ
ユニオンクエリの作成例を確認するため、「T_従業員1」と「T_従業員2」テーブルを以下に示すとおり作成します。
表1 各テーブルのフィールド名とデータ型
フィールド名 | データ型 |
氏名 | 短いテキスト |
部署コード | 短いテキスト |
年齢 | 数値型 |
電話番号 | 短いテキスト |
出身地 | 短いテキスト |
表2 「T_従業員1」テーブルのサンプルデータ
氏名 | 部署コード | 年齢 | 電話番号 | 出身地 |
山田 太郎 | A111 | 35 | 080-1234-5678 | 東京都 |
佐藤 花子 | A101 | 16 | 090-9876-5432 | 北海道 |
鈴木 次郎 | B102 | 40 | 080-1928-3764 | 愛知県 |
表3 「T_従業員2」テーブルのサンプルデータ
氏名 | 部署コード | 年齢 | 電話番号 | 出身地 |
一木 英恵 | A101 | 22 | 090-9876-9999 | 青森県 |
中山 一郎 | A101 | 42 | 080-1234-5678 | 東京都 |
上島 達夫 | B102 | 25 | 090-2586-2262 | 三重県 |
ユニオンクエリの作成方法
サンプルデータが用意できたので、Accessでユニオンクエリを作成するための注意点を先に示します。
1つ目は、クエリデザインの画面でユニオンクエリを作成することはできず、SQLビューでの作成が必須という点です。
2つ目は、ユニオンクエリを作成するためにSQL文を記載することになりますが、「UNION」句を用いるか「UNION ALL」句を用いるかで結果に違いが表れるという点です。前者は重複行を除外しますが、後者は重複行を許容します。
3つ目は、特に重要で各選択クエリのフィールド数は同じでなければならないという点です。選択クエリAではフィールド数が5つ、選択クエリBではフィールド数が6つ設定すると、エラーが発生しますので注意してください。
以上の点を踏まえてユニオンクエリを作成していきますが、まずは表2に示す「T_従業員1」テーブルの全てのフィールドを抽出条件なしで表示するSQL文は次のようになります。
SELECT T_従業員1.氏名, T_従業員1.部署コード, T_従業員1.年齢, T_従業員1.電話番号, T_従業員1.出身地 FROM T_従業員1;
同様に、表3に示す「T_従業員2」テーブルのレコードを全て表示させるためのSQL文は次のようになります。
SELECT T_従業員2.氏名, T_従業員2.部署コード, T_従業員2.年齢, T_従業員2.電話番号, T_従業員2.出身地 FROM T_従業員2;
図2に示すように、「作成」タブの「クエリデザイン」アイコンをクリックします。続いて表示される「テーブルの表示」画面では何も選択せずに「閉じる」をクリックします。
これによりクエリデザイン画面には何も表示されない状態となりますので、図3に示すように「クエリツール」の「SQLビュー」を選択し、画面を切り替えます。
「SQLビュー」の画面が開いた後、図4に示すように以下のSQL文を入力します。
SELECT T_従業員1.氏名, T_従業員1.部署コード, T_従業員1.年齢, T_従業員1.電話番号, T_従業員1.出身地 FROM T_従業員1
UNION
SELECT T_従業員2.氏名, T_従業員2.部署コード, T_従業員2.年齢, T_従業員2.電話番号, T_従業員2.出身地 FROM T_従業員2;
この際、「FROM T_従業員」の後ろはセミコロン(;)ではなく半角スペースを入力します。また、「UNION」の後ろも半角スペースが必要です。
ユニオンクエリによる表示結果の確認
SQLビューにSQL文を入力した後、「クエリツール」の「データシートビュー」をクリックすると、ユニオンクエリの結果が図5に示すように表示されます。
以上のように、複数の選択クエリのデータを一覧で表示させる際にはユニオンクエリを活用することができます。
まとめ
今回は、複数のテーブルを足してレコードを一覧で表示するユニオンクエリについて紹介しました。サンプルの場合、全てのフィールドを選択しましたが必要なフィールドだけを選択して表示することもできます。また、定期的に複数のテーブル情報を一覧表示する必要がある場合に、一度ユニオンクエリを作成しておけば、それ以降はユニオンクエリを実行するだけで必要なデータ閲覧をすることができるようになります。
このように、ユニオンクエリを活用することで効率的なデータ閲覧ができ、業務効率の改善が期待できます。
スポンサーリンク
コメント