ユニオンクエリとは、複数のテーブルを1つに結合できるクエリで、テーブルは同じ構造でないといけません。
「一致しません」のエラーが表示された場合は、結合するテーブルやクエリの構造が同じでないからです。
用途は例えば支店別の売上げテーブルがある場合、ユニオンクエリ全て結合すれば会社全体の売上げデータとして使用できます。
作成はクエリデザインやウィザードが使用できないので、SQL文で記述する必要があります。
SQL文とは、データベースの言語でSQL文を分かり易くしたものがAccessのクエリです。
クエリデザイン画面で、リボンの[ホーム]~表示グループの[表示]~[SQLビュー]でSQL文を表示することが可能です。
例えば選択クエリのSQL文は、SELECT [フィールド名] FROM [テーブル名]になります。
ユニオンクエリのSQL文は、SELECT * FROM [テーブル名1] UNION ALL SELECT * FROM [テーブル名2]になります。
並び替えは「ORDER BY」を使用し、下記のように記述します。
SELECT [フィールド名] FROM [テーブル名] ORDER BY [フィールド名]
ユニオンクエリ場合は、SELECT * FROM [テーブル名1] UNION ALL SELECT * FROM [テーブル名2] ORDER BY [フィールド名]になります。
降順で並べ替えするには、DESCを追加し「ORDER BY [フィールド名] DESC」になります。
SQL文については、「Access SQL Tips」に詳しく掲載していますので参照してください。
1つ目の社員名簿テーブルです。
2つ目の社員データテーブルです。
例えば、年別のテーブルや、AさんとBさんが別々に登録したデータをまとめる場合などに便利な機能です。
ユニオンクエリは通常のクエリのように、デザイン画面で選択し作成するようなことができません。
作成はSQLという言語を使用します。
リボンの[作成]~[クエリ デザイン]をクリックします。
テーブルの選択画面が表示されますが閉じます。
リボンの[クエリ ツール]~[デザイン]~[ユニオン]をクリックします。
すると下のような何もない画面が表示されるので、下のSQL文を入力します。
SELECT * FROM T_社員名簿
UNION ALL SELECT * FROM T_社員データ
作成したユニオンクエリを保存し実行します。
すると下のようにテーブルが結合され表示されます。
並び替えを行うには上のSQL文に「ORDER BY 並び変えるフィールド」を追加します。
ここでは氏名で並び替えています。
SELECT * FROM T_社員名簿
UNION ALL SELECT * FROM T_社員データ
ORDER BY 氏名;
降順にするには「ORDER BY 氏名 DESC」になります。
名前で並び替えた結果です。
例えば、下のように「電話番号」フィールドがないテーブルでユニオンクエリを実行します。
実行すると「ユニオンクエリで選択した2つのテーブルまたはクエリの列数が一致しません」のエラーが表示されます。
このように結合するテーブルの構造が同じでないと実行できません。