Accessでお仕事 クエリ内の複数テーブルまたはクエリのデータを結合する方法

クエリ内の複数テーブルまたはクエリのデータを
結合する方法

クエリの利点は、複数のテーブルやクエリからデータを取り出して、1 つにまとめたり、まとめたデータに処理を実行できることにあります。たとえば、得意先と、そこからの受注状況を合わせて表示したい場合があります。それには、[得意先] テーブルと [受注] テーブルからデータを取り出す必要があります。

複数のテーブルやクエリをクエリに追加するときには、それぞれのフィールド リストが互いに結合線で結合されていることを確認してください。これにより、相互の情報の関連が Access 側に指示されます。

結合線がテーブル間のリレーションシップを示す

結合が作成されていない 2 つのテーブルからフィールドを追加し、クエリを実行したとしても、この 2 つのテーブルのデータを組み合わせることにはあまり意味がありません。この場合、2 つのテーブル間の各レコードのあらゆる組み合わせが表示されます。データベース用語では、この種類のクエリは乗積 (または直積) を返すといいます。たとえば、結合が作成されていない 2 つのテーブルが 10 レコードずつあるとき、すべてのフィールドをクエリに追加した場合は、クエリを実行すると、結果は 100 レコード (10×10) になります。また、クエリの実行時間も長くなります。

既に [リレーションシップ] ウィンドウでテーブル間にリレーションシップを作成してある場合、クエリのデザイン ビューで関連テーブルを追加すると結合線が自動的に表示されます。読み取り専用が設定されている場合、結合線に加えて、一対多リレーションシップの "一" 側のテーブルを示す "1"、および "多" 側のテーブルを示す無限大記号 が結合線の両端に表示されます。

たとえリレーションシップを作成していない場合でも、結合が自動的に作成されることがあります。ただし、クエリに 2 つのテーブルを追加したときに、それぞれのテーブルに同一または互換性のあるデータ型のフィールドが保存されていて、しかも結合フィールドの一方が主キーの場合に限ります。この場合、参照整合性が設定されていないため、"一" と "多" を示す記号は表示されません。

データが保存されているテーブルを共に関連付けるためだけのテーブルやクエリを 1 つ、あるいは複数、追加する必要があります。たとえば、クエリに [得意先] テーブルと [受注明細] フィールドを追加する場合、結合できるフィールドが互いに存在しないため、結合線がありません。しかし、[受注] テーブルは両方に関連付けられているので、クエリに [受注] テーブルを追加すると、他の 2 つのテーブルの間を結ぶことができます。

関連付けられているテーブルの追加により、ほかのテーブル間のリレーションシップが作成される

クエリのデザイン ビューのデザイン グリッドに両方のテーブルやクエリからフィールドを追加すると、互いの結合フィールドで同じ値があるかどうかを確認するように、既定の接続からクエリに指示が発せられます。これを、データベースの用語では内部結合といいます。同じ値が見つかると、対応する 2 つのレコードが組み合わされて 1 つのレコードとしてクエリの結果に表示されます。一方のテーブルやクエリのレコードが、もう一方のテーブルやクエリのどのレコードにも一致しない場合は、いずれのレコードもクエリの結果に表示されません。もう一方のテーブルやクエリに一致するレコードがあってもなくても、テーブルやクエリのすべてのレコードが選択されるようなクエリにする場合は、結合の種類を変更する必要があります。

結合の種類、およびクエリの結果への影響については、

をクリックしてください。結合フィールドの値が相手方の結合フィールドの値と比べて、より大きい、より小さい、等しくない、大きいか等しい、または小さいか等しい、という条件に基づいてレコードが選択されるようなクエリにする場合には、SQL ビューで SQL ステートメントを作成する必要があります。

メモ   複数テーブル クエリの作成後、データを更新できる場合とできない場合とがあります。詳細については、 をクリックしてください。


このページのトップに戻る↑ 次の項目を見る↓ Accessでお仕事 目次に戻る

ホームページのトップに戻る