Office 2019 Access 2019

複数フィールドを他テーブルの同じフィールドへ結合するクエリの作成

投稿日:2022年1月26日 更新日:

Accessで2つのテーブルがあって、1つのテーブルの複数のフィールドが、別テーブルの同じフィールドへ結合する場合のクエリの作成方法です。

例えば、社員テーブルと商品テーブルがあって、商品テーブルに開発担当者と販売担当者が設定されていて、開発担当者と販売担当者は、同じ社員マスターテーブルを参照するような場合です。

社員テーブルのフィールドを結合すればいいのですが、商品テーブルの複数フィールドを社員テーブルの1つのフィールドへ結合するとうまくいきません。

クエリのデザインビューに同じ社員テーブルを追加して、それぞれに結合します。

クエリのデザインビュー

参考ここでのウィンドウは、[タブ付きドキュメント](既定)の設定にしています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。従来からAccessを使用している方に ...

続きを見る

2つのテーブルの確認

テーブル[T_社員]は、以下のように設定しています。

デザインビューとデータシートビューです。

テーブル[T_社員]のデザインビューとデータシートビュー

テーブル[T_商品]は、以下のように設定しています。[開発担当ID]と[販売担当ID]が空白になっているレコードもあるテーブルです。

デザインビューとデータシートビューです。

テーブル[T_商品]のデザインビューとデータシートビュー

クエリの作成

2つのテーブルを結合させたクエリを作成します。

クエリのデザインビューで2つのテーブルを追加して、テーブル[T_商品]リストの[開発担当ID]と[販売担当ID]をテーブル[T_社員]リストの[社員ID]フィールドを結合します。

クエリのデザインビューで2つのテーブルを追加

結合プロパティで設定

結合線をダブルクリックして、[結合プロパティ]を表示して、設定を変更します。

['T_商品'の全レコードと'T_社員'の同じ結合フィールドだけを含める。]を選択して[OK]ボタンをクリックします。

結合プロパティの設定

2つの結合プロパティで設定します。結合線は、以下のようになります。

設定後の結合線

そして、クエリを実行すると、以下のようになります。

でも、[氏名]は表示されていません。[Expr]は同じフィールドが複数ある場合に表示されるものです。

これは、求めている結果ではありませんね。

クエリを実行した結果

参考エラーが出る場合があります。

2つの結合プロパティが異なる場合、以下のようなエラーメッセージが表示されます。すべての結合プロパティを確認してみてください。

あいまいな外部結合が含まれているので、SQLステートメントを実行できません。いずれかの結合を最初に実行するために、第一次結合を実行する分割クエリを作成し、SQLステートメントにそのクエリを含めてください。

メッセージウィンドウ

テーブル[T_社員]を追加して結合

こういう場合は、クエリのデザインビューに同じ社員テーブルを追加して、別々にフィールドを結合します。

[販売担当ID]と[社員ID]の結合は削除します。

そして、右クリックしてショートカットメニューから[テーブルの表示]をクリックして、テーブル[T_ 社員]を追加します。

ショートカットメニューの[テーブルの表示]

[T_社員_1]リストが追加されます。テーブルリストの名前は自動的にお尻に[_1]がつきます。

テーブルリストを追加したクエリのデザインビュー

そして、[販売担当ID]と[T_社員_1]の[社員ID]を結合します。

結合線をダブルクリックして、結合プロパティを開いて['T_商品'の全レコードと'T_社員'の同じ結合フィールドだけを含める。]を選択して[OK]ボタンをクリックします。

結合線の向きで確認できると思います。

結合線を設定したクエリのデザインビュー

デザイングリッドの[販売担当ID]の右隣の[氏名]フィールドのテーブルを[T_社員_1]に変更します。

クエリのデザインビューでフィールドのテーブル名を変更

クエリを実行すると、以下のようになります。求めたい結果が表示されるようになります。

クエリを実行した結果

参考バージョンによって異なると思いますが、クエリのデザインビューで[テーブルの追加]やショートカットメニューから[テーブルの表示]をクリックすると、Microsoft 365のAccessとAccess 2021では[テーブルの追加]作業ウィンドウとして表示されます。

クエリデザインの「テーブルの追加」は作業ウィンドウに表示される

参照整合性を設定した後にクエリを作成する場合

リレーションシップを先に作成している場合もあると思います。

以下のように参照整合性を設定しています。

リレーションシップも、同じマスターテーブル[T_社員]を追加して設定します。

参照整合性を設定したリレーションシップ

それぞれ以下のように参照整合性をオンに設定しています。

リレーションシップの設定で[参照整合性]をオン

参考リレーションシップについては、以下の記事で解説しています。

リレーションシップの作成と参照整合性の設定

Accessでは、複数のテーブルがあって、そのテーブル間の共通フィールドを関連付けることができます。この関連付けのことを[リレーションシップ ...

続きを見る

クエリを作成

リレーションシップを設定した後、クエリを作成すると以下のように自動的に結合線が設定されます。

クエリのデザインビュー

しかし、このままでは、レコードは表示されません。

クエリを実行した結果

クエリを編集

この場合も同じように、テーブル[T_社員]を追加して、結合線を設定し直します。

結合線は、以下のようになりますが、これでOKです。

クエリノデザインビューで結合を編集

クエリを実行すると、以下のようになります。

クエリを実行した結果

参考結合プロパティについては、以下の記事も参考になると思います。

2つのテーブルの共通フィールドを比較して一方にしかないデータを抽出する

2つのテーブルの共通フィールドを比較して、一方のテーブルにしかないレコードを抽出する方法です。 例えば、製品テーブルと売上テーブルがあって、 ...

続きを見る

2つのテーブルの差分を求める(不一致クエリウィザード)

Accessで2つのテーブルの不一致レコードを抽出する方法です。 下のように[テーブルA]と[テーブルB]があります。2つのテーブルのうち、 ...

続きを見る

検索

ほかの記事も検索してみませんか?

Profile

執筆者/はま

-Office 2019 Access 2019

Copyright © 2001-2022 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2022 AllRights Reserved Powered by AFFINGER4.