複数条件リレーションシップでは、照合フィールドの数を増やします。これにより、FileMaker Pro Advanced が関連レコードを正しく連結する前に評価する条件を増やします。リレーションシップの各テーブルの各照合フィールドの値は、フィールドが表示されている順に比較されます。これは AND 比較演算で、正しく一致するには、すべての照合フィールドに対して、他方のテーブルの同じレコードに対応する値が存在する必要があります。
このリレーションシップを定義する条件は次のとおりです:
テーブル | フィールド名 | コメント |
テーブル A | テキストフィールド A | テキストフィールド B と数字フィールド B に対する照合フィールド |
| 数字フィールド A | テキストフィールド B と数字フィールド B に対する照合フィールド |
テーブル B | テキストフィールド B | テキストフィールド A と数字フィールド A に対する照合フィールド |
| 数字フィールド B | テキストフィールド A と数字フィールド A に対する照合フィールド |
このリレーションシップの条件に従うと、テーブル A のあるレコードにおいて、テキストフィールド A の値が「青」、数字フィールド A の値が「123」の場合、このレコードは、テーブル B の、テキストフィールド B と数字フィールド B の値がそれぞれ「青」と「123」であるレコードにのみ一致します。テキストフィールド A とテキストフィールド B の値が一致しても、数字フィールド A と数字フィールド B の値が一致しなければ、このリレーションシップで関連レコードは返されません。
テーブル | レコード番号 | フィールド名 | 値 | 関連レコードか? |
テーブル A | 1 | テキストフィールド A | 青 | はい |
| 2 | テキストフィールド A | 青 | いいえ |
| 3 | テキストフィールド A | 赤 | いいえ |
テーブル B | 1 | テキストフィールド B | 青 | はい |
| 2 | テキストフィールド B | 赤 | いいえ |
| 3 | テキストフィールド B | 青 | はい |
この例では、次の 3 つのテーブルを持つデータベースを使用して複数条件リレーションシップを作成します:
•「機材」テーブル。レンタル機材の在庫を保存します。
•「顧客」テーブル。顧客の名前と住所を保存します。
•「ケータリングライン項目」テーブル。機材のレンタルに関するレコード (機材 ID、顧客 ID、およびイベント日を含む) を保存します。
このデータベースは機材のレンタルを管理して、特定の日における特定の顧客のレンタルをすべて表示します。
1. 「顧客」テーブルと「ケータリングライン項目」テーブルの間に複数条件リレーションシップが成立しています。次のフィールドを持つ次のテーブルを作成します:
テーブル | フィールド名 | コメント |
顧客 | 顧客 ID | シリアル番号の自動入力が設定された数字フィールド。「ケータリングライン項目」テーブルに対する照合フィールドの 1 つです。 |
| イベント日 | 日付フィールド。「ケータリングライン項目」テーブルに対するもう 1 つの照合フィールドです。 |
ケータリングライン項目 | 顧客 ID | 数字フィールド。「顧客」テーブルに対する照合フィールドの 1 つです。 |
| イベント日 | 日付フィールド。「顧客」テーブルに対するもう 1 つの照合フィールドです。 |
| 機材 ID | 数字フィールド |
2. [リレーションシップ編集] ダイアログボックスで、「顧客」テーブルと「ケータリングライン項目」テーブル間のリレーションシップの照合フィールドとして「顧客 ID」と「イベント日」を定義します。
3. 「顧客」テーブルで、「顧客 ID」フィールドにシリアル番号の自動入力を設定すると、「顧客」テーブルの各レコードには固有な ID 番号が付けられます。
4. 「ケータリングライン項目」テーブルで、[このリレーションシップを使用してこのテーブルでのレコードの作成を許可] を選択します。
テーブルはリレーションシップグラフで次のように表されます:
5. 「顧客」レイアウトにポータルを追加して、「顧客::機材 ID」フィールドをポータルに追加します。
新しい関連レコードを作成するには、「顧客:: イベント日」フィールドに現在の日付を入力して、「顧客」レイアウトのポータルに機材 ID 番号を入力します。
「イベント日」フィールドは照合フィールドになっており、このリレーションシップでは「ケータリングライン項目」テーブルへの関連レコードの作成が許可されているので、「顧客::イベント日」の値が「ケータリングライン項目::イベント日」フィールドに自動的に入力されます。
過去の日付のケータリングを表示する場合は、「顧客::イベント日」の値を変更すると、同じ顧客 ID とイベント日が入力されている関連レコードがすべて表示されます。