複数条件リレーションシップ
複数条件リレーションシップでは、照合フィールドの数を増やします。これにより、FileMaker Pro が関連レコードを正しく連結する前に評価する条件を増やします。リレーションシップの各テーブルの各照合フィールドの値は、フィールドが表示されている順に比較されます。これは 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、およびイベント日を含む) を保存します。
このデータベースは機材のレンタルを管理して、特定の日における特定の顧客のレンタルをすべて表示します。
- 「顧客」テーブルと「ケータリングライン項目」テーブルの間に複数条件リレーションシップが成立しています。次のフィールドを持つ次のテーブルを作成します:
- [リレーションシップ編集] ダイアログボックスで、「顧客」テーブルと「ケータリングライン項目」テーブル間のリレーションシップの照合フィールドとして「顧客 ID」と「イベント日」を定義します。
- 「顧客」テーブルで、「顧客 ID」フィールドにシリアル番号の自動入力を設定すると、「顧客」テーブルの各レコードには固有な ID 番号が付けられます。
- 「ケータリングライン項目」テーブルで、[このリレーションシップを使用してこのテーブルでのレコードの作成を許可] を選択します。
テーブルはリレーションシップグラフで次のように表されます:
- 「顧客」レイアウトにポータルを追加して、「顧客::機材 ID」フィールドをポータルに追加します。
テーブル |
フィールド名 |
コメント |
顧客 |
顧客 ID |
シリアル番号の自動入力が設定された数字フィールド。「ケータリングライン項目」テーブルに対する照合フィールドの 1 つです。 |
|
イベント日 |
日付フィールド。「ケータリングライン項目」テーブルに対するもう 1 つの照合フィールドです。 |
ケータリングライン項目 |
顧客 ID |
数字フィールド。「顧客」テーブルに対する照合フィールドの 1 つです。 |
|
イベント日 |
日付フィールド。「顧客」テーブルに対するもう 1 つの照合フィールドです。 |
|
機材 ID |
数字フィールド |
新しい関連レコードを作成するには、「顧客:: イベント日」フィールドに現在の日付を入力して、「顧客」レイアウトのポータルに機材 ID 番号を入力します。
「イベント日」フィールドは照合フィールドになっており、このリレーションシップでは「ケータリングライン項目」テーブルへの関連レコードの作成が許可されているので、「顧客::イベント日」の値が「ケータリングライン項目::イベント日」フィールドに自動的に入力されます。
過去の日付のケータリングを表示する場合は、「顧客::イベント日」の値を変更すると、同じ顧客 ID とイベント日が入力されている関連レコードがすべて表示されます。