初心者のFileMaker pro Q&A

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

1.ファイルメーカーで解らない事があればここで質問して下さい。

何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

ログインしていません。

アナウンス

#1 2013-08-29 17:16:22

やまほん
メンバー

リレーションを通過するときのソート順

だんだんこちらに質問がはいってきましたね。
私が適当に書いた移転の文章がデフォルトの文章になっているようで、うれしいやらはずかしいやら思っていたら、
久々に!?リレーションでわからないことが出てきました。
よろしくお願いいたします。

さて、質問ですが

ID ○番の人が最新の試験で取った点数 ←ここまでは取得できました。
ID ○番の人が最新の試験を受けた場所 ←これがうまく取得できません。

リレーションは
IDテーブル=個人点数管理テーブル=試験場所テーブル
   個人ID=個人ID
                     試験場所ID=試験場所ID

IDテーブル
個人IDフィールド
個人名フィールド

個人点数管理テーブル
個人IDフィールド
点数フィールド
受験日フィールド
試験場所IDフィールド

試験場所テーブル
  試験場所IDフィールド
試験場所名フィールド

各リレーションはそれぞれのIDで=で結んでいます。
最新の試験結果を取得するために、
IDテーブル=個人点数管理テーブルの個人点数管理テーブルは受験日を降順でソートにリレーションの画面で設定。
このような設定状態で、最初に書いたように、最新試験結果は問題なく取得できるのですが、
その試験場所を取得しようとすると最新試験場所ではなく、その人が受験した最古の試験場所が取得されてしまいます。

何が悪いのか行き詰ってしまいました。
このようにリレーションを通り越して取得するような場合は、
通過する?リレーションでのソート設定は反映されないのでしょうか?

8adv winです。

オフライン

#2 2013-08-29 18:14:03

チポ
メンバー

Re: リレーションを通過するときのソート順

試験場所テーブル :: 試験場所ID
としたのでは。

個人点数管理テーブル :: 試験場所ID
でいいでしょう。

オフライン

#3 2013-08-29 19:15:35

やまほん
メンバー

Re: リレーションを通過するときのソート順

チポさん、ありがとうございます。

個人点数管理テーブル :: 試験場所ID

↑これでIDは取れます。
説明不足でごめんなさい。

そのIDでさらにリレーションさせて、結果的には以下のように

個人(ID) (個人名)
最新試験結果(点数)
最終試験場所(場所名)
を表示させ、場所名取得して別のことで計算式に引用したいのです。(表示だけならポータルで事足ります)
場所IDではなくて、場所名をひっぱってきたいですが。。。

こんな場合は個人点数管理テーブルの各レコードに場所名も保存しないといけないのでしょうか?

編集者 やまほん (2013-08-29 20:27:21)

オフライン

#4 2013-08-30 09:02:40

チポ
メンバー

Re: リレーションを通過するときのソート順

IDテーブルでの話ですよね。

計算フィールドの計算式
個人点数管理テーブル :: 試験場所ID
としてこのフィールドと試験場所テーブルの試験場所IDとでリレーションすれば
試験場所名を参照できます。

ただし、
最終試験のレコードが追加されると、
IDテーブルでの表示を変えるには再表示の方法を考えないとダメかも。

例えば、
個人IDを全置換で入力し直すなどして再照合させるなど。。

オフライン

#5 2013-08-30 12:03:50

やまほん
メンバー

Re: リレーションを通過するときのソート順

レコードが追加された場合、再表示の方法が必要となり、残念ながら現在のDBでは少し不都合があります。

今いろいろ修正した結果、
個人点数管理テーブルに新しく計算フィールドを作って直接試験場所をいれるようにしました。
あまりフィールドを増やしたくなかったのですが、、、仕方ないのでこれで行こうと思います。

でもなぜそういう仕様?になっているのかが疑問です。
できそうな感じするんですが、そのような仕様にすると何が都合わるいんですかね。

ありがとうございました!

編集者 やまほん (2013-08-30 12:04:12)

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer