クエリを使ってデータを管理する

関連付けられていないデータ ソースにクエリを実行する

お使いのブラウザーではビデオがサポートされていません。Microsoft Silverlight、Adobe Flash Player、Internet Explorer 9 のいずれかをインストールしてください。

互いに直接的なリレーションシップを持たないデータ ソースから情報を抽出するクエリを作成することが必要な場合があります。

中間テーブルを使用して、クエリでデータ ソースを接続する

クエリを実行すると、テーブル間に作成済みのリレーションシップが使用され、さらに他のデータ ソース間の接続が推測および作成されます。クエリで必要なリレーションシップが存在しない場合は、そのクエリの一部としてテーブル同士を接続します。

さまざまなサプライヤーから仕入れた製品に対する受注数を確認すると仮定します。"サプライヤー" テーブルは、製品 ID と数量情報が含まれている "発注書明細表" テーブルに接続されていません。ただし、"発注書" テーブルは、"発注書明細表" テーブルに接続されています。

定義済みのリレーションシップがある、またはない複数のテーブル データ ソース。

ヒント: このリレーションシップが、作成中のクエリの外部で必要となる可能性がる場合は、後で使用できるように中間リレーションシップを作成することをお勧めします。作成方法については、「Create many-to-many relationships」 (多対多リレーションシップの作成) を参照してください。

データベース内に中間テーブルを作成したくない場合は、"発注書" テーブルをクエリ内で中間テーブルとして使用します。"発注書" テーブルを "サプライヤー" テーブルの左側に追加して、接続を作成します。

1 つのテーブルを使用して他の 2 つのテーブルを間接的に接続する

"発注書" テーブルにより、"サプライヤー" テーブルと "発注書明細表" テーブルの 2 つの異なるテーブルが接続されます。次の抽出条件を満足するフィールド ("サプライヤー" テーブルの ID、"発注書" テーブルの "サプライヤー ID" など) を使用してテーブルを接続します。

  • この 2 つのフィールドには、一致するデータ型または互換性のあるデータ型が含まれています。たとえば、テキスト フィールドを数値フィールドに接続することはできません。

  • フィールドによって、各テーブル内で一致する一意のレコードが識別されます。たとえば、姓は必ずしも一意であるとは限らないので、2 つの"姓" フィールドを接続するのは好ましくありません。

  • フィールドによって、結果として適切なレコードが生成されます。たとえば、"サプライヤー ID" を "購入 ID" に接続すると、両者の ID が類似している場合、一致が得られる可能性があります。ただし、"サプライヤー ID" は "購入 ID" と無関係であるため、その結果に意味はありません。"サプライヤー" テーブルの "ID" を、"発注書" テーブルの "サプライヤー ID" に接続することをお勧めします。両方のフィールドはサプライヤーを識別するものであるため、返されるレコードは意味をなします。

手順

データベース内に中間テーブルが存在している場合も、クエリ内で中間テーブルを使用するだけである場合も、次の手順に従います。

  1. 接続されていない 2 つのテーブル間のクエリに中間テーブルを追加します。

  2. 中間テーブルを使用して、必要な接続を作成します。

    接続では、任意の種類の適切な結合を使用できます。ただし、このモジュールで前述した抽出条件に一致するフィールドを介して接続する必要があります。

    中間テーブルを使用して必要な接続を作成する
  3. クエリを実行します。

    クエリを作成するための一般的な手順に従い、出力フィールドを追加し、抽出条件を追加し、クエリを実行または保存します。詳細については、「基本的なクエリの作成」をご覧ください。

    注: 結果に中間テーブルを含める必要はありません。中間テーブルは、Access がデータを接続できるように、クエリのデータ ソースの一部として使用されるにすぎません。

さらに詳しく

基本的なクエリの作成

複数のデータ ソースを使用するクエリの作成

外部結合でクエリを作成する

Excel のトレーニング

Outlook のトレーニング

関連付けられていない、結合を共有しないテーブルまたはその他のデータ ソースに対してクエリを実行する必要がある場合もあります。これを行うには、2 つの方法があります。

中間テーブルを使用します。これは、目的のデータ ソースとの結合を共有するテーブルです。

または、結合を追加します。

まず、中間テーブルから始めましょう。この例のデータベースでは、従業員が注文ごとに状態を入力する必要がありますが、入力を忘れる場合があります。

そこで気になるのが次の質問です。"状態が入力されていない注文はどれか。入力を忘れた従業員は誰か。"

表面的には、クエリで次の 3 つのテーブルを使用する必要があるように見えます。つまり、"従業員"、"注文"、"注文の詳細の状態" が次の質問のデータ要素に対応するためです。"状態が入力されていない注文はどれか。入力を忘れた従業員は誰か。"

クエリにテーブルを追加して、2 つのテーブルが結合されていないことがわかりますが、それで問題ありません。結合を追加できます。

ID フィールドで結合し、クエリを実行し、...何でもありません。

これで、最初に行うべき作業を行います。テーブル間のリレーションシップをご覧ください。

リレーションシップのチェーンを見る場合は、"従業員 - 注文"、"注文 - 注文の詳細"、"注文の詳細 - 注文の詳細の状態" に注目します。

"注文 - 注文の詳細の状態" は関連付けられていませんが、"注文の詳細" はどちらにも関連付けられています。つまり、"注文の詳細" が中間テーブルになります。

次に、ルールを紹介します。中間テーブルがデータ ソースの一部である限り、関連付けられていないテーブルに対してクエリを実行し、有効な結果を得ることができます。

結果に中間テーブルを含める必要はありませんが、クエリのデータ ソースの一部である必要があります。

"注文の詳細" をクエリに追加します。フィールドを同じ状態にし、クエリを実行します。

空白の値に対してフィルター処理します。これが答えです。

それでは、クエリに結合を追加しましょう。この操作を行うには、いくつかのルールにご注意ください。

まず、結合するテーブルまたはクエリには、一致するデータ型または互換性のあるデータ型のフィールドが必要です。

たとえば、数値と通貨のデータ型には互換性がありますが、数値とテキストには互換性がありません。

2 番目に、作成する結合は、クエリ内にのみ存在します。ここでは、テーブルのリレーションシップは作成していません。

3 番目に、結果は分かりやすいものにする必要があります。たとえば、結合が注文や社用車のデータを返す場合、最初からやり直す必要があります。

どの顧客がどの製品を注文したかを知っておく必要があるとします。

"顧客"、"注文"、"注文の詳細" を新しいクエリに追加します。ここで、結合を追加します。顧客 ID を注文テーブルから顧客テーブルで一致するフィールドにドラッグします。

これが結合線です。これで別のルールができました。Access は、ドラッグするフィールドを新しい結合の左側に配置します。目的のものではない場合は、結合線を選択し、Del キーを押して、最初からやり直します。

これで、クエリを作成する準備ができました。"顧客" から "姓" と "名"、"製品 ID"、"注文 ID"、"量"、"注文の詳細" から "単価" の順に追加します。

クエリを実行し、データが表示されました。

関連付けられていないデータ ソースに対してクエリを実行するときに使用できる 2 つの方法を学びました。中間テーブルを使用するか、または結合を追加すると、データの質問に対する回答が表示されます。

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

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

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

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

×