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

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

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

You are not logged in.

Announcement

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


#1 2016-06-22 10:07:46

m-yrk
Member

集計の集計について教えてください

はじめまして
FMPro14で開発をしています。

集計フィールドを使用して、ひと毎のレコード件数とその人が買った商品の種類の件数を
横に並べてリスト形式で出したいのですが商品の種類の件数の出し方が分かりません。お知恵をお貸しください。

■■■データ■■■
ひと |日付 |商品
-------------------------------
Aさん |5/1  |リンゴ
Aさん |5/2  |ミカン
Aさん |5/3  |リンゴ
Bさん |5/1  |リンゴ
Bさん |5/2  |モモ
Bさん |5/3  |ミカン
Bさん |5/4  |ミカン

■■■出したい結果■■■
ひと |レコード件数 |商品の種類件数
--------------------------------------------------
Aさん |     3件     |  2種類   
Bさん |     4件     |  3種類   

レコード件数の方は普通に集計フィールド(カウント)を作成して、リスト形式の小計(ひとでソート)をやればよいのですが、
商品の種類は「ひと」「商品」で集計したレコードの件数(?)を求めるのでしょうか?
「ひと」、「商品」で自己リレーションして・・・これ以上思いつきません。

どうぞよろしくお願いします。

Offline

#2 2016-06-22 10:20:55

チポ
Member

Re: 集計の集計について教えてください

> 「ひと」、「商品」で自己リレーションして
これで求められますね。


「ひと」でリレーションして、
その動的値一覧を作り、その項目数
でも求められます。

いずれにせよ、
集計フィールドだけでは無理でしょうね。

Offline

#3 2016-06-22 10:45:40

m-yrk
Member

Re: 集計の集計について教えてください

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

動的値一覧を作ると重複しているものは1件になってくれるんですよね。
それで件数を出す・・・という認識でよろしいでしょうか?

その場合、計算フィールドで「ValueCount ( 作成した値一覧 )」で取得するのでしょうか?
それってそのレコードに該当する(AさんのレコードにはAさんに関する値一覧の件数)ものがとれるのでしょうか、
それとも、計算フィールド内で、If文でAさんだったら・・みたいなLoopが必要となってくるのでしょうか。(むずかしく考えすぎですかね。)

よろしくお願い致します。

Offline

#4 2016-06-22 11:27:12

チポ
Member

Re: 集計の集計について教えてください

> 動的値一覧を作ると重複しているものは1件になってくれるんですよね。
> それで件数を出す・・・という認識でよろしいでしょうか?

その通りです。

> その場合、計算フィールドで「ValueCount ( 作成した値一覧 )」で取得するのでしょうか?
これもその通りです。

> それってそのレコードに該当する(AさんのレコードにはAさんに関する値一覧の件数)ものがとれるのでしょうか
単に計算フィールドだけでそのレコードのひとの集計がでます。

Offline

#5 2016-06-22 12:07:00

m-yrk
Member

Re: 集計の集計について教えてください

チポ様

「ひと」で自己リレーションして、その自己リレーションテーブルから「商品」の値一覧を作りました。
そして、計算フィールドでValueCount ( ValueListItems ( Get ( ファイル名 ) ; "商品" ) )をしたところ、

小計パート(「ひと」でソート)で、Aさん:3種類、Bさん:3種類となってしまいました。
AさんBさんのトータルがどちらにも出ているように見えます。
値一覧を「ひと」「商品」で作成するのでしょうか・・。

よろしくお願い致します。

Offline

#6 2016-06-22 12:11:18

チポ
Member

Re: 集計の集計について教えてください

試しに
ValueListItems ( Get ( ファイル名 ) ; "商品" )
この計算フィールドをボディパートに置いてみたらいかがでしょう。

Offline

#7 2016-06-22 13:05:32

m-yrk
Member

Re: 集計の集計について教えてください

チポ様

できました!
計算フィールドを「非保存」にしていませんでした。

助かりました。ありがとうございます!

Offline

#8 2016-06-22 13:40:43

m-yrk
Member

Re: 集計の集計について教えてください

申し訳ありません。
出来たのですが、また分からなくなりました。

このデータを今度は、「日付」で5/3以降で検索をかけますと、トータルで出てきます。
(Aさん:2種類、Bさん:3種類)

自己リレーションのキーを「ひと」「日付」にすると、Aさん:1種類、Bさん:1種類で正しく表示されますが
今度はすべて表示にした時にもAさん:1種類、Bさん:1種類となってしまいます。

自己リレーションのオリジナルテーブルを絞り込んだときは自己リレーションも同じく絞られる方法はないでしょうか?

よろしくお願いします。

Offline

#9 2016-06-22 15:39:55

チポ
Member

Re: 集計の集計について教えてください

表示したい日付を入力するグローバルフィールドを作ります。

さらに計算フィールド・グローバルを二つ作り、

日付グローバルに入力が有ればその日付を入力
なければ、
遠い過去の日付(例えば 0001/1/1)

遠い未来の日付(例えば 3000/12/31)

リレーションの照合に
  過去 <= 日付
  and
  未来 >= 日付
を加えます。


他のフィールドでも検索が有るのなら同様に考えればいいですが、
だんだんに厄介になりますよね ;;
そうなったらスクリプトかな。。

Offline

#10 2016-06-22 16:03:21

m-yrk
Member

Re: 集計の集計について教えてください

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

検索条件もリレーションのキーに含めるのですね。たくさん条件がある時は大変ですね(文言で含む検索など)
ずうずうしいですが、スクリプトになる場合はどのようにやるのでしょうか?
簡単に教えていただけるとありがたいです。

よろしくお願い致します。

Offline

#11 2016-06-22 16:20:54

チポ
Member

Re: 集計の集計について教えてください

検索後
ひと 商品 の順でソート

最初のレコードから順に、
ひとが変わったらカウントをリセット
商品が前のレコードと変わったら、カウントをアップ

手抜の説明ですが、
これを元にスクリプトを作ればいいでしょう。

Last edited by チポ (2016-06-22 16:21:48)

Offline

#12 2016-06-22 16:32:40

m-yrk
Member

Re: 集計の集計について教えてください

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

なるほど!1行ずつ読んでカウントしていくのですね。
こちらの方が私には馴染みがあります笑

たくさん質問をしてしまって申し訳ないです。
とても参考になりました!ありがとうございました。

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, 7 queries executed - Memory usage: 524.45 KiB (Peak: 544.99 KiB) ]