2 つのテーブルを比較し、一致するものがないレコードを検索する

2 つのテーブルを比較して、一方のテーブルのレコードに対応するものが、他方のテーブルには含まれていないことを確認する場合があります。これらのレコードを識別する最も簡単な方法は、不一致クエリ ウィザードを使用することです。ウィザードでクエリを作成後、クエリのデザインを変更してフィールドを追加または削除したり、2 つのテーブル間に結合を追加して値が一致するフィールドを示したりすることができます。ウィザードを使用せず、独自のクエリを作成して不一致のレコードを検索することもできます。

この記事では、不一致クエリ ウィザードを開始および実行する方法、ウィザードの出力を変更する方法、不一致のレコードを検索する独自のクエリを作成する方法について紹介します。

注: 不一致クエリ ウィザードは、Access Web アプリまたは Web データベースではサポートされていません。

この記事の内容

どのようなときに不一致のレコードを検索しますか。

不一致クエリ ウィザードを使用して、2 つのテーブルを比較する場合

不一致クエリを作成および変更して、複数フィールドを比較する場合

独自のクエリを作成して、不一致のレコードを検索する場合

どのようなときに不一致のレコードを検索しますか。

2 つのテーブルを比較し、不一致のレコードを検索する一般的な状況を、以下に 2 つ示します。状況によっては、最初の手順で不一致のレコードを検索する場合があります。この記事では、不一致のレコードを検索する方法のみについて説明します。

  • 1 つのテーブルに任意の物品 (製品など) についてのデータを格納し、別のテーブルにそれに関連するアクションについてのデータ (受注など) を格納する場合。   

    たとえば、ノースウィンド データベース テンプレートでは、商品についてのデータは "商品" テーブルに格納され、各受注に含まれる商品についてのデータは "受注明細" テーブルに格納されます。仕様により "商品" テーブルには受注についてのデータがないため、"商品" テーブルのみを参照しても、販売されたことのない商品を判別できません。また、"受注明細" テーブルには販売された製品のデータのみが含まれるため、販売されたことのない商品の情報は、"受注明細" テーブルのみを参照しても判別できません。販売されたことのない商品を判別するには、2 つのテーブルを比較する必要があります。

    1 つ目のテーブルに含まれるものの一覧を参照して、2 つ目のテーブルに対応するアクションが存在しないことを確認したい場合、不一致クエリを使用することができます。

  • 重複、冗長、または競合する情報を含んだ 2 つのテーブルを、1 つのテーブルに統合する必要がある場合。    

    たとえば、"得意先" という 1 つのテーブルおよび "顧客" という別のテーブルがあるとします。これらのテーブルはほとんど同じですが、一方のテーブルまたは両方のテーブルには、他方にはないレコードがいくつか含まれています。これらのテーブルを統合するには、まずどのレコードが、一方のテーブルまたは他方のテーブルで一意になっているのかを判別する必要があります。

    このような状況では、この記事で説明する方法が役に立ちますが、さらに追加の手順が必要な場合があります。不一致クエリ ウィザードを実行すると不一致のレコードを識別できますが、レコードを結合したセットを取得するには、ウィザードの結果を使用してユニオン クエリを作成します。構造化照会言語 (SQL) ステートメントの記述に慣れている場合は、不一致クエリ ウィザードを使用せずに、手動でユニオン クエリを記述してもかまいません。

    重複、冗長、または競合する情報の問題は、複数のテーブルに重複するデータを確認することで対処できる場合があります。

ユニオン クエリ、または重複するデータの検索、非表示、あるいは除去の詳細については、「参照」セクションのリンクをクリックしてください。

注: この記事の例では、ノースウィンド データベース テンプレートを使用して作成されたデータベースを使用します。

ノースウィンドのセットアップ方法

  1. [ファイル] タブの [新規] をクリックします。Access 2007 を使用している場合は、Microsoft Office ボタン Office ボタンの画像 をクリックして、[新規] をクリックします。

  2. 使用している Access のバージョンによっては、検索ボックスまたは左側のウィンドウでノースウィンドを検索することができます。[テンプレート カテゴリ] で [ローカル テンプレート] をクリックします。

  3. [ローカル テンプレート] で [ノースウィンド 2007 サンプル] をクリックしてから、[作成] をクリックします。

  4. Northwind Traders のページ ([スタートアップ画面] オブジェクト タブ) の指示に従ってデータベースを開き、[ログイン ダイアログ] ウィンドウを閉じます。

ページの先頭へ

不一致クエリ ウィザードを使用して 2 つのテーブルを比較する

  1. [作成] タブの [クエリ] グループで [クエリ ウィザード] をクリックします。Access 2007 を使用している場合は、[作成] タブの [その他] グループで [クエリ ウィザード] をクリックします。

    Access リボンの [クエリ] グループには 2 つのオプションがあります。クエリ ウィザードとクエリ デザイン
  2. [新しいクエリ] ダイアログ ボックスの [不一致クエリ ウィザード] をダブルクリックします。

  3. ウィザードの最初のページで、不一致のレコードのあるテーブルをクリックし、[次へ] をクリックします。たとえば、販売されたことがないノースウィンドの商品の一覧を表示するには、[商品] テーブルをクリックします。

    [不一致クエリ ウィザード] ダイアログ ボックスで、テーブルまたはクエリを選択します。
  4. 2 番目のページで、関連するテーブルをクリックし、[次へ] をクリックします。この例の場合は、[受注明細] テーブルをクリックします。

    または不一致クエリ ウィザードのダイアログ ボックスに関連するレコードを含むテーブルまたはクエリを選択します。
  5. 3 番目のページで、テーブルを関連付けるフィールドを選択し、[< = >] をクリックして、[次へ] をクリックします。テーブルごとに 1 つのフィールドのみを選択できます。この例の場合は、"商品" テーブルの [ID] および "受注明細" テーブルの [商品 ID] を選択します。[関連付けるフィールド] ボックスのテキストを見て、正しいフィールドが組み合わされていることを確認します。

    [不一致クエリ ウィザード] ダイアログ ボックスのテーブルから、一致するフィールドを選択します。

    既存のリレーションシップがテンプレートに組み込まれているため、[ID] フィールドおよび [商品 ID] フィールドは既に選択されている場合があります。

  6. 4 番目のページで、確認する 1 つ目のテーブルのフィールドをダブルクリックし、[次へ] をクリックします。この例の場合は、[ID] フィールドおよび [商品名] フィールドをクリックします。

    [不一致クエリ ウィザード] ダイアログ ボックスのクエリの出力に表示するフィールドを選択します。
  7. 5 番目のページで、結果を表示するか、クエリのデザインを変更するかを選択できます。この例では、[クエリを実行して結果を表示する] をオンにします。表示されたクエリ名を使用して、[完了] をクリックします。

    [不一致クエリ ウィザード] ダイアログ ボックスで、不一致クエリの名前を入力します。

    クエリのデザインを変更して、他の抽出条件の追加、並べ替え順序の変更、またはフィールドの追加や削除を実行できます。不一致クエリを変更する方法の詳細については、次のセクションを参照してください。クエリの作成および変更方法の一般的な情報については、「参照」セクションのリンクを参照してください。

ページの先頭へ

不一致クエリを作成、変更して複数フィールドを比較する

  1. [作成] タブの [クエリ] グループで [クエリ ウィザード] をクリックします。Access 2007 を使用している場合は、[作成] タブの [その他] グループで [クエリ ウィザード] をクリックします。

  2. [新しいクエリ] ダイアログ ボックスの [不一致クエリ ウィザード] をダブルクリックします。

  3. ウィザードの最初のページで、不一致のレコードのあるテーブルをクリックし、[次へ] をクリックします。たとえば、販売されたことがないノースウィンドの商品の一覧を表示するには、[商品] テーブルをクリックします。

  4. 2 番目のページで、関連するテーブルをクリックし、[次へ] をクリックします。この例の場合は、[受注明細] テーブルをクリックします。

  5. 3 番目のページで、テーブルを関連付けるフィールドを選択し、[< = >] をクリックして、[次へ] をクリックします。テーブルごとに 1 つのフィールドのみを選択できます。この例の場合は、"商品" テーブルの [ID] および "受注明細" テーブルの [商品 ID] を選択します。[関連付けるフィールド] ボックスのテキストを見て、正しいフィールドが組み合わされていることを確認します。ウィザードを完了した後に、残りのフィールドを結合できます。

    既存のリレーションシップがテンプレートに組み込まれているため、[ID] フィールドおよび [商品 ID] フィールドは既に選択されている場合があります。

  6. 4 番目のページで、確認する 1 つ目のテーブルのフィールドをダブルクリックし、[次へ] をクリックします。この例の場合は、[ID] フィールドおよび [商品名] フィールドをクリックします。

  7. 5 番目のページで、[クエリのデザインを編集する] をクリックし、[完了] をクリックします。

    デザイン ビューにクエリが開きます。

  8. クエリのデザイン グリッドで、ウィザードの 3 番目のページで指定したフィールド (この例では ID と製品 ID) によって、2 つのテーブルが結合されていることを確認します。関連するフィールドの残りのペアごとに、1 つ目のテーブル (不一致のレコードがあるテーブル) から 2 つ目のテーブルにフィールドをドラッグして、結合を作成します。たとえば、"商品" テーブルの [表示価格] フィールドを "受注明細" テーブルの [単価] フィールドにドラッグします。

  9. 結合 (フィールドを結んでいる線) をダブルクリックして、[結合プロパティ] ダイアログ ボックスを開きます。結合ごとに、"商品" テーブルの全レコードを含めるオプションを選択し、[OK] をクリックします。

    クエリのデザイン グリッドで、各結合の終端に矢印があることを確認します。

    線のスタイルで結合の種類が示されます。

    1. "表示価格" フィールドと "単価" フィールドとの間に結合を作成すると、両方のテーブルの出力が制限されます。両方のテーブルに一致するデータがあるレコードのみが、クエリ結果に含まれます。

    2. 結合プロパティを編集すると、矢印が指すテーブルのみが結合によって制限されます。矢印の元のテーブルのレコードは、すべてクエリ結果に含まれます。

    注: 結合の矢印は、すべて同じ方向を指すようにしてください。

  10. 関連するレコードがあるテーブル (この例では、"受注明細" テーブル) 内の、1 つ目のテーブルに結合されているフィールドのうち、ウィザードの 3 番目のページで選択したフィールド (この場合、"商品 ID" フィールド) を除く各フィールドをダブルクリックします。これらのフィールドごとに、[表示] 行のチェック ボックスをオフにし、[抽出条件] 行に「Is Null」と入力します。

  11. オプションで、他のクエリ フィールドに抽出条件を追加するか、1 つ目のテーブルの値に基づく集計フィールドを作成します。

  12. [デザイン] タブの [結果] グループで、[実行] をクリックします。

    クエリによって、既存の受注に含まれていない商品の名前が返されます。

ページの先頭へ

独自のクエリを作成して不一致のレコードを検索する

  1. [作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。Access 2007 を使用する場合は、[作成] タブの [その他] グループで [クエリ デザイン] をクリックします。

  2. [テーブルの表示] ダイアログ ボックスで、不一致のレコードがあるテーブルをダブルクリックし、次に関連するレコードがあるテーブルをダブルクリックします。

  3. [テーブルの表示] ダイアログ ボックスを閉じます。

  4. クエリのデザイン グリッドで、2 つのテーブルの関連するフィールドを結ぶ、結合と呼ばれる線があることを確認します。結合がない場合は、1 つ目のテーブル (不一致のレコードがあるテーブル) の関連する各フィールドを 2 つ目のテーブル (関連するレコードがあるテーブル) にドラッグして作成します。

  5. 結合をダブルクリックして [結合プロパティ] ダイアログ ボックスを開きます。結合ごとに、オプション [2] をオンにし、[OK] をクリックします。

    クエリのデザイン グリッドで、結合が変化し、終端に矢印ができることを確認します。

    注: 結合は、すべて同じ方向を指すようにしてください。結合が異なる方向を指しているとクエリは実行されず、結合が矢印でない場合も実行されないことがあります。結合は、不一致のレコードがあるテーブルから出ている必要があります。

  6. 不一致のレコードがあるテーブルで、クエリで返すフィールドをダブルクリックします。

    オプションで、これらの任意のフィールドの抽出条件を入力するか、集計フィールドを作成します。

  7. 関連するレコードがあるテーブルで、1 つ目のテーブルに結合されている各フィールドをダブルクリックします。これらのフィールドごとに、[表示] 行のチェック ボックスをオフにし、[抽出条件] 行に「Is Null」と入力します。

  8. [デザイン] タブの [結果] グループで、[実行] をクリックします。

ページの先頭へ

関連項目

簡単な選択クエリを作成する

重複レコードをクエリで検索する

ユニオン クエリを使用して複数のクエリの結果を 1 つに結合する

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×