初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-10-04 09:24:29

Toppy
Member

複数キーからレコードの特定

初めまして

FileMakerで初歩的かもしれませんが質問させていただきます

もし、複数の別のテーブルの値が判明しており、そこから更に別のテーブルのレコードを特定したい場合どのようにすればよろしいでしょうか?

例、AテーブルのA'レコードとBテーブルのB'レコード、CテーブルにはA'レコードとB'レコードとC'レコードがあるとします

A'レコードの値とB'レコードの値が判明しており、CテーブルのC'レコードを取得した場合どのようにすればよろしいでしょうか

リレーションシップの画面でそのように設定しようとしても、「複数のキーを設定できません」のような警告が出てきて、うまく取得できません(B2というテーブルが作られてしまう)

以上です。
分かりにくい質問で大変恐縮ですが回答よろしくお願い致します

Offline

#2 2016-10-04 09:37:57

チポ
Member

Re: 複数キーからレコードの特定

AテーブルとBテーブルの関係は?

> CテーブルのC'レコードを取得
どのテーブルで取得するのでしょうか?


ご質問が抽象すぎて、よくつかめませんよ。
もっと具体的に書かれた方がよろしいかと。。

Offline

#3 2016-10-04 10:12:12

Toppy
Member

Re: 複数キーからレコードの特定

チポ様、閲覧ありがとうございます

すみません、データの構成ですが間違っていました。

AテーブルにA'レコードとC'レコードがあり、BテーブルにA'レコードとB'レコードがあり
CテーブルにB'レコードとC'レコードとD'レコードがあります

AテーブルとBテーブルはA'レコードで既にリレーションシップが設定されています
BテーブルとCテーブルをB'レコードでリレーションシップを設定し、
AテーブルとCテーブルをC'レコードでリレーションシップを設定しようとすると

グラフ内の2つのテーブルの間に複数のリレーショナルパスを指定することはできません。

と表示されます

>> CテーブルのC'レコードを取得
> どのテーブルで取得するのでしょうか?
AテーブルのC'レコードとBテーブルのB'レコードの一意の値から最終的にCテーブルのD'レコードの値を表示したいです

初心者故、的外れな質問かもしれませんがよろしくおねがいします

また説明不足なようでしたらまたご指摘いただけると嬉しいです

Offline

#4 2016-10-04 10:17:20

Shin
Member

Re: 複数キーからレコードの特定

レコード、とは、フィールドのことでしょうか。

リレーションをループ上に設定することは出来ません。
リレーションのどちらかを、別のテーブルオカレンスにする必要があります。どちらを別オカレンスにするかは、運用を見ないと決められませんし、その設定で今後の運用に大きな影響を及ぼす可能性もありますので、よく考えて設定する必要があります。

Offline

#5 2016-10-04 10:41:46

Toppy
Member

Re: 複数キーからレコードの特定

Shin様、閲覧ありがとうございます

> レコード、とは、フィールドのことでしょうか。
すみません。フィールドのことです

> リレーションをループ上に設定することは出来ません。
> リレーションのどちらかを、別のテーブルオカレンスにする必要があります。どちらを別オカレンスにするかは、運用を見ないと決められませんし、その設定で今後の運用に大きな影響を及ぼす可能性もありますので、よく考えて設定する必要があります。
別のテーブルオカレンスというのは
グラフ内の2つのテーブルの間に複数のリレーショナルパスを指定することはできません。
と表示された時に既にあるテーブルオカレンスとは別の名前で作成するということでしょうか?

リレーションシップやテーブルオカレンス自体まだ完璧に把握しているわけではないので……必死に勉強してます

以上、よろしくお願いします

Offline

#6 2016-10-04 11:16:45

チポ
Member

Re: 複数キーからレコードの特定

> AテーブルのC'レコードとBテーブルのB'レコードの一意の値から最終的にCテーブルのD'レコードの値を表示したいです
Aテーブルから見て、Bテーブルのレコードが対1であるのならば、
AテーブルでCを参照したいのでしょうね。

とすれば、
AとBのリレーションで、
AテーブルでB::B'の値を得るフィールドB'を作り、
Cテーブルとのリレーションを現在の照合にB'の照合をandで加えればいいでしょう。

Offline

#7 2016-10-04 11:27:31

チポ
Member

Re: 複数キーからレコードの特定

ああ、
AとCのリレーションが出来ないのですね。

リレーションシップグラフで、
参照される側のCテーブルを複製して、C2を作り、それとAとでリレーションします。

参照する側を複製するととても面倒なことになりますから、
ここ、重要ですよ。


それで参照するフィールドは
  C2::D'
ですね。
C::D'ではダメです。

Offline

#8 2016-10-04 13:42:37

Toppy
Member

Re: 複数キーからレコードの特定

チポ様、ありがとうございます

お教えいただいた通りに試してみたのですが、取得できませんでした……

レイアウトでフィールドの挿入等をする時に関連テーブル項目に表示されていれば取得できる気がします

現在Cテーブルは非関連テーブル項目に表示されています

Offline

#9 2016-10-04 14:47:02

チポ
Member

Re: 複数キーからレコードの特定

リレーション
  A::A' = B::A'
として、

Aテーブルで計算フィールドB'の計算式
  B::B'
とします。

もう一つリレーション
リレーションシップグラフでCテーブルの複製を作り、C2とし
  A::C' = C2::C'
  and
  A::B' = C2::B'
これで、

Aテーブルで
C2::D'フィールドの値を参照できます。

ここでは、BとCのリレーションは不要ですね。
もし、このリレーションをしないのなら、
C2は不要で、AとCのリレーションが可能になります

Offline

#10 2016-10-05 09:41:46

Toppy
Member

Re: 複数キーからレコードの特定

チポ様、ありがとうございます

教えていただいた方法で無事、D'フィールドを取得&表示することが出来ました!

大変助かりました。また何かあればよろしくお願いいたします!

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 520.4 KiB (Peak: 524.94 KiB) ]