- ベストアンサー
FileMakerProでリレーションについて
- FileMakerProを使用してリレーションを行う方法について教えてください。
- テーブル1とテーブル2をリレーションさせると、個人マスタに登録されている人しか一覧に表示されません。測定値のない人も表示したい場合はどのように処理すればよいでしょうか?
- 結果には個人マスタには存在するが、測定値がない場合には「無」と表示したいと考えています。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
集計フィールドの「平均」は値の入っていないデータは除外されます。 田中 100 鈴木 近藤 50 の平均は75です。
その他の回答 (8)
- chieffish
- ベストアンサー率44% (1149/2554)
学校は後出しなので考慮していません。 学校も入れて同時にとなると値一覧も動的になるので理解しづらい と思います。まずはひとつの学校で試して下さい。 書き忘れましたが、同姓同名の生徒がいると正しい結果になりません。 氏名では無く生徒IDでの管理をお勧めします。
補足
chieffishさん、どうもありがとうございます。 ひとつの学校で試してみました。 平均値については一覧で氏名は表示させますが 計算からは値の無い人に関しては除いて計算させたいと思います。 そのような計算は可能でしょうか? よろしくお願いします。
- chieffish
- ベストアンサー率44% (1149/2554)
集計レイアウトですから簡単な方法がありますね。 前回の方法で全氏名と日付の組合せを作ったら測定日Countが 基準に達しないレコードは対象外にすると平均には含まれません。
補足
chieffishさん、ありがとうございます。 回答いただいたNo.4の <1.測定値テーブルで連結というテキストフィールドを作り、計算値自動入力にして < 式を測定日&氏名とし、入力値の制限を「常時」「ユニーク」に設定。 のところは 測定日&学校とすればいいのでしょうか? その場合、ユニークにはならないのですが、問題ないでしょうか? すみません、初歩的な質問ですが、よろしくお願いします。
- chieffish
- ベストアンサー率44% (1149/2554)
>かつ測定日が一番多い日を正しい日とし ここは曖昧ですね。学校と測定日で自己リレーションするとCount関数で各測定日 の数は出ます。それに「曖昧数」以上のリレーションを追加すると更に絞れますか ら、その日付リストを作ると良さそうですが。
- chieffish
- ベストアンサー率44% (1149/2554)
違いますよ。バージョン不明ですけど、管理メニューの値一覧で 新規値一覧を作って名前を日付一覧として、フィールド値指定で 測定値テーブルの日付フィールドを指定します。 これで重複の無い日付のリストを得られます。
補足
chieffishさん、ありがとうございます。 教えていただいた事は出来ました。ただ、私の質問と考えていた結果があっていなかったようでした。 個人マスタテーブル フィールド氏名 フィールド学校 測定値テーブル フィールド氏名 フィールド学校 フィールド測定日 フィールド身長 とあります。 同じ測定日の学校毎の身長の平均を取得したいです。 3ヶ月に1度程度身長の測定を行いますが、同じ日に測定できない方もいます。 学校毎で、かつ測定日が一番多い日を正しい日とし、それ以外に測定した人は平均の計算には含めないとしたいです。 一覧には表示させるというような事をしたいのですが、出来るのでしょうか? 学校も10校ぐらい存在します。 すみませんが、よろしくお願いします。
- chieffish
- ベストアンサー率44% (1149/2554)
1.測定値テーブルで連結というテキストフィールドを作り、計算値自動入力にして 式を測定日&氏名とし、入力値の制限を「常時」「ユニーク」に設定。 2.測定値テーブルを全レコード表示にして、今は空白の連結フィールドをレコード メニューのフィールド内容全置換、計算式で置換を選び式を測定日&氏名にする。 3.新しく値一覧を作る。名前は日付一覧でフィールド値指定で「測定値テーブルの 日付」を指定。 4.個人マスタでテキスト繰り返し計算フィールドを作る。名前は日付リストで式は GetValue ( ValueListItems ( Get(ファイル名) ; "日付一覧" ) ; Get ( 計算式繰り返し位置番号 ) ) 結果タイプはテキストで繰り返し数は5位にする。 5.個人マスタで全レコードを表示する。 6.測定値テーブルに切り替えて、ファイルメニューからレコードのインポート「ファ イル」を選んで、ファイル指定窓で自分のファイルを指定。 7.インポート順指定窓でインポート元は個人マスタ、インポート先は現在のテーブル にして、氏名→氏名と日付リスト→日付のみを→で結び、インポート方法は新規レ コードとして追加。 8.インポートボタンを押すと、次に出るオプション窓で「自動化オプション実行」に チェック。繰り返しを「複数のレコードに分ける」をチェック。 最初から成功するとは思えないので、コピーファイルでテストして下さい。
補足
chieffishさん、ありがとうございます。 <3.新しく値一覧を作る。名前は日付一覧でフィールド値指定で「測定値テーブルの < 日付」を指定。 はテーブルを新しく作成するという意味でしょうか? すみませんが、教えていただけないでしょうか。 よろしくお願いします。
- chieffish
- ベストアンサー率44% (1149/2554)
あぁ、テーブル1の方が正味人数は多いということですか。 測定日は何日分あるのですか。また、測定日ごとにデータの無い人を 追加するという意味ですか。
補足
chieffishさん、何度もありがとうございます。 <あぁ、テーブル1の方が正味人数は多いということですか。 はい、そうです。 <測定日は何日分あるのですか。また、測定日ごとにデータの無い人を <追加するという意味ですか。 大体3ヶ月に1回ぐらい測定しています。 稼働してまもないので、測定日は4回ほどですが、これから増えていく予定です。 毎回全員の測定データがないので、データのない人は無いという表示で追加したいと思っています。 可能でしょうか? すみませんが、よろしくお願いします。
- chieffish
- ベストアンサー率44% (1149/2554)
でしたら >氏名、測定日、身長、結果 はテーブル2をリスト表示するだけですよね。 >身長の平均、最小値、最大値 はその3個の集計フィールドを作って、テーブル2の新規レイアウトで 測定日をソート対象とする小計パートに 測定日 平均 最小値 最大値 とフィールドを配置して(ボディは無し)測定日でソートしてリスト 表示にするだけです。
補足
chieffishさん、ありがとうございます。 内訳も表示させたいと思っており、 テーブル1に存在してテーブル2には存在しない人も 値無という形で一覧に表示させたいと思っています。 一覧の内容を テーブル1の氏名、テーブル2の身長 というようにすると、テーブル1の数だけしか一覧表示されません。 テーブル2の全データを表示させ、かつテーブル1にしか データのない人をデータ無として表示させる方法が ありましたら教えていただけないでしょうか。 説明がわかりづらく申し訳ありませんが、よろしくお願いします。
- chieffish
- ベストアンサー率44% (1149/2554)
>身長の平均、最小値、最大値 これは個人の集計値ですか、それとも全体ですか。
補足
chieffishさん、いつもありがとうございます。 説明が足らず申し訳ありません。 >>身長の平均、最小値、最大値 >これは個人の集計値ですか、それとも全体ですか。 測定日付単位での集計です。 どうぞ、よろしくお願いします。
お礼
chieffishさん、ありがとうございます。 知りませんでした。 初歩的な質問にまでご丁寧にご回答いただきありがとうございました。 大変助かりました。 自分ひとりで作業していたらいつまで経っても解決できませんでした。 ありがとうございます。