Access:ユニオンクエリで複数テーブルを結合する|並び替え方法と一致しませんのエラー

ユニオンクエリの作り方と並び替えの追加、構造が異なる場合に発生する「2つのテーブルまたはクエリの列数が一致しません」のエラーについて掲載します。

BackHome Backクエリ

ユニオンクエリとは、複数のテーブルを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文を入力する

作成したユニオンクエリを保存し実行します。

すると下のようにテーブルが結合され表示されます。

テーブルが結合され表示される

■ ユニオンクエリの並び替え

並び替えを行うには上のSQL文に「ORDER BY 並び変えるフィールド」を追加します。

ここでは氏名で並び替えています。

SELECT * FROM T_社員名簿
UNION ALL SELECT * FROM T_社員データ
ORDER BY 氏名;

降順にするには「ORDER BY 氏名 DESC」になります。

「ORDER BY 並び変えるフィールド」を追加する

名前で並び替えた結果です。

名前で並び替えた結果

■ 「2つのテーブルまたはクエリの列数が一致しません」のエラーについて

例えば、下のように「電話番号」フィールドがないテーブルでユニオンクエリを実行します。

「電話番号」フィールドがないテーブルでユニオンクエリを実行

実行すると「ユニオンクエリで選択した2つのテーブルまたはクエリの列数が一致しません」のエラーが表示されます。

このように結合するテーブルの構造が同じでないと実行できません。

ユニオンクエリで選択した2つのテーブルまたはクエリの列数が一致しません

BackHome Backクエリ

Copyright(C) FeedSoft