Office 2019 Access 2019

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

投稿日:2021年1月10日 更新日:

2つのテーブルの共通フィールドを比較して、一方のテーブルにしかないレコードを抽出する方法です。

例えば、製品テーブルと売上テーブルがあって、売上がない製品を求めたいというような場合です。

不一致クエリウィザードを使用する方法もありますが、ここでは、直接クエリを作成します。

出現していない製品コードを抽出

参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

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

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

続きを見る

2つのテーブルの確認

テーブル[T_製品]とテーブル[T_売上明細]があります。

製品テーブル

テーブル[T_製品]は、製品情報のみのテーブルです。

テーブル[T_製品]のデータシートビュー

デザインビューは、以下のようになっています。

フィールド[製品コード]に[主キー]の設定をしています。

テーブル[T_製品]のデザインビュー

参考主キーについては、以下の記事で解説しています。

Accessテーブルの[主キー]の設定

Accessのテーブルでは、[主キー](シュキー)を設定することができます。[主キー]とは、各レコードを固有のものとして識別するフィールドの ...

続きを見る

売上テーブル

テーブル[T_売上明細]は、売上情報のテーブルです。

テーブル[T_売上明細]のデータシートビュー

デザインビューは、以下のようになっています。

テーブル[T_売上明細]のデザインビュー

リレーションシップ

[データベースツール]タブの[リレーションシップ]をクリックします。

[データベースツール]タブの[リレーションシップ]

リレーションシップは、2つのテーブルのフィールド[製品コード]で結ばれています。

リレーションシップの設定

参考参照整合性については、以下の記事を参照してください。

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

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

続きを見る

クエリをデザインビューで作成

売上がない製品を求めるためのクエリを作成します。

ここでのサンプルは、シンプルなので見ただけで分かりますが、レコード数が多くなると見た目では分かりません。

これをクエリで求められるようにします。

2つのテーブルの[製品コード]を比較

クエリデザインにテーブルを表示

[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。

[作成]タブの[クエリ]グループにある[クエリデザイン]

[テーブルの表示]ダイアログボックスが表示されます。

[テーブル]タブの[T_製品]を選択して、[追加]ボタンをクリックします。

同じように[T_ 売上明細]も追加します。

追加が終わったら、[閉じる]ボタンをクリックして[テーブルの表示]ダイアログボックスは閉じます。

[テーブルの表示]ウィンドウ

クエリは、以下のようになります。

参照整合性を設定しているので、以下のように結合線が表示されています。

クエリデザイン-参照整合性の設定をしている場合

リレーションシップを設定しない場合は、以下のようになります。これでもOKです。

クエリデザイン-参照整合性の設定なし

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

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

デザイングリッドにフィールドを追加

クエリに表示したいフィールドをデザイングリッドにドラッグします。ダブルクリックでも構いません。

テーブル[T_製品]の3つのフィールドをデザイングリッドに追加します。

デザイングリッドにフィールドを追加

比較する共通フィールドを追加

2つのテーブルの比較する共通フィールドをデザイングリッドに追加します。

ここでは、テーブル[T_売上明細]の[製品コード]を追加します。

比較する共通フィールドをデザイングリッドに追加

テーブル[T_売上明細]の[製品コード]は、クエリに表示する必要はないので、[表示]の□をクリックしてオフします。

デザイングリッドの[表示]の□をクリックしてオフ

テーブル[T_売上明細]にはないレコードを抽出したいので、[抽出条件]に[Is Null]と入力します。

[抽出条件]に[Is Null]と入力

結合プロパティの設定

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

結合線をダブルクリック

[結合プロパティ]は、以下のようになっています。

[結合プロパティ]の表示

ここで、[2:'T_製品'の全レコードと'T_売上明細'の同じ結合フィールドのレコードだけを含める。]を選択して、[OK]ボタンをクリックします。

結合プロパティで2を選択

結合線は、以下のようになります。

設定後の結合線

結合線はダブルクリックしていつでも確認できます。

結合線をダブルクリックして結合プロパティを表示

結合プロパティについて

結合線をダブルクリックして表示される[結合プロパティ]には3つの選択肢があります。

Accessでは、クエリのデザインビューに配置したテーブルの位置とは関係なく、一側テーブルが左多側テーブルが右と呼ばれます。

  1. 内部結合
  2. 左外部結合
  3. 右外部結合

結合プロパティ

通常は、内部結合といってテーブル間の結合フィールドが一致するレコードが表示されます。

外部結合は、どちらか一方のテーブルのすべてのレコードが表示されます。

表示されるはずのレコードが表示されない場合は、結合を間違って選択している場合があります。

クエリの結果を確認して名前を付けて保存

デザインビューの[表示]ボタンをクリックして、結果を確認します。

デザインビューの[表示]ボタンをクリック

結果、以下のようになります。

クエリの結果

クエリは、分かりやすい名前を付けて保存します。

キーボードから[F12]キーを押すと、[名前を付けて保存]ダイアログボックスを表示できます。

ここでは、[Q_売上無し製品]という名前を付けています。

[名前を付けて保存]ダイアログボックス

参考不一致クエリウィザードを使って求める方法は、以下の記事で解説しています。不一致クエリウィザードで作成した後、クエリをデザインビューで開くと、同じ仕組みで作成されていることが分かります。

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

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

続きを見る

また、1つのテーブルの複数フィールドを他テーブルの同じフィールドへ結合する場合のクエリの作成方法は、以下で解説しています。

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

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

続きを見る

検索

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

Access / Excel / PowerPoint / Word

関連記事30件

Profile

-Office 2019 Access 2019

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

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