演習
多くの場合、必要な答えを取得するには、複数のテーブルから、またはテーブルとクエリの組み合わせから情報を収集するクエリを作成します。
結合について
質問に答えるために複数のソース (テーブルまたはクエリ) から取得したデータを使用することが必要な場合があります。 たとえば、特定の地域に住むどれだけの顧客が特定の製品を注文したかを表示するとします。
複数のデータ ソースを追加する場合、Access ではデータ ソース間に定義されている既存のリレーションシップを使用するか、もしくはデータ ソース間にクエリを目的とした結合を作成します。 結合とは、クエリ内でデータ ソース間に設定する単なるリレーションシップの種類です。
注
結合は一時的なものであり、クエリにのみ関連付けられます。 テーブル間に同じ結合を頻繁に作成する場合は、それらのテーブル間に永続的なリレーションシップを作成することをお勧めします。
内部結合
ほとんどの結合は、内部結合です。 内部結合は、「外部結合を使用したクエリの作成」で説明する外部結合とは対照的な結合です。
内部結合では、一方のソース内のデータに対応するレコードが、他方のソース内で見つかった場合にのみ、前者のソースからデータを返します。 たとえば、製品と注文に関する情報をクエリした場合、注文がきている製品のデータのみが表示されます。
自己結合
自己結合では、同一のテーブルまたはクエリの 2 つのコピーを結合します。 結合されたフィールド内に互いに一致する値がある場合は、自己結合を使用して同一のテーブルから取得したレコードを組み合わせます。
たとえば、組織内のすべての従業員 (マネージャーを含む) を一覧した "顧客" テーブルがあるとします。 このテーブルには、従業員のマネージャーの ID を保持する "上司" フィールドがあります。
| ID | 姓 | 名 | 上司 |
|---|---|---|---|
| 1 | Freehafer | Nancy | 5 |
| 2 | Cencini | Andrew | |
| 3 | Kotas | Jan | 10 |
| 4 | Sergienko | Mariya | 5 |
| 5 | Thorpe | Steven | 2 |
| 6 | Neipper | Michael | 10 |
| 7 | Zare | Robert | 10 |
| 8 | Guissani | Laura | 10 |
| 9 | Hellung Larsen | Anne | 5 |
| 10 | Dempsey | Molly | 3 |
従業員のマネージャーの名前を見つけるには、表内で従業員を検索し、"上司" フィールドでマネージャーの ID を確認し、同じ "従業員" フィールドでマネージャーの ID を検索します。 たとえば、Nancy は、ID が 5 で Steven Thorpe という名前を持つマネージャーの直属の部下です。
このタスクを自動化するには、"顧客" テーブルをクエリに 2 度追加し、自己結合を作成します。 データ ソースの 2 回目の追加が行われると、Access は、2 番目のインスタンスの名前に _1 を付加します。 たとえば、"顧客" テーブルを 2 回追加した場合、2 番目のインスタンスの名前は "顧客_1" となります。 各従業員のマネージャーの名前を表示するには、"顧客" テーブルの "上司" フィールドと "顧客_1" テーブルの "従業員 ID" フィールドとの間に結合を作成します。
1. データ ソースを追加する
- [ 作成>Query Design] を選択します。
必要なすべてのテーブルとクエリをデータ ソースとして追加します。 (心配しないでください。忘れた場合でも、後でさらにデータ ソースを追加する機会があります)。
データ ソースとしては、含まれている情報を表示したいテーブル (製品テーブル) や、抽出条件で使用する必要のある情報が含まれているテーブルなどがあります。
保存された既存のクエリは、データ ソースとして使用することもできます。 たとえば、特定の月のすべての注文を検索するクエリを既に作成済みである場合は、そのクエリと製品テーブルを使用して特定の月に販売したすべての製品を表示します。
2. 関連するデータ ソースを結合する
- 結合を自分で追加するには、1 つのデータ ソースのフィールドを、別のデータ ソース内の対応するフィールドまでドラッグします。 既定では、Access は内部結合を作成します。
ほとんどのリレーションシップの場合は、Access によって内部結合が作成されます。 参照整合性が適用されるように指定した場合は、それが追加されます。 ただし、必要な結合が Access によって作成されない場合があります。 たとえば、新しいクエリに既存のクエリを追加する場合で、リレーションシップをまだ作成していないときには、Access によって結合は自動的に作成されません。
3. クエリを実行する
- クエリを作成するための一般的な手順に従い、出力フィールドを追加し、抽出条件を追加し、クエリを実行または保存します。 詳細については、「基本的なクエリの作成」をご覧ください。