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

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

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

You are not logged in.

Announcement

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


#1 2023-12-06 21:45:56

mirai
Member

LIST関数で得たリストを集計可能か

いつも参考にさせて頂いております。
WIN 10
FM cloud
FM20


とある仕事の項目をLISTした結果が
日本のエリアで下記のような結果が1フィールドに改行で返されます。

九州
九州
関東
九州
九州
九州
関西
関西
九州
九州


このLISTを
九州:7 関東:1 関西:2
と表記させることは可能でしょうか?

よろしくお願いします。

Offline

#2 2023-12-07 06:42:40

himadanee
Guest

Re: LIST関数で得たリストを集計可能か

While関数でできるとは思いますが
LISTした結果を使うより、そのLISTの代りにExecuteSQLを使った方がシンプルだと思います。

#3 2023-12-07 10:41:07

かなえる
Guest

Re: LIST関数で得たリストを集計可能か

スマートな方法とは言えませんが、PatternCountでカウントする方法もありますね。

#4 2023-12-07 10:56:01

チポ
Member

Re: LIST関数で得たリストを集計可能か

リストの元のテーブルで自己リレーションして、
計算フィールド
  エリア & ":" Count ( 自己リレーション::エリア )
として、
これのユニークなリストを得ればできますね。

Offline

#5 2023-12-07 11:17:56

himadanee
Guest

Re: LIST関数で得たリストを集計可能か

確かに「日本のエリア」が数が少ない固定した値群だろうから、PatternCountで全部列挙してしまうのは、ありですね。
例では登場順に結果が並んでますけど、固定されてた方が見やすそうだし...

自己リレーションでやるのは集計前のLISTが検索結果からだとすると追加の設定が必要ですけど、どうかな。

#6 2023-12-07 16:14:31

チポ
Member

Re: LIST関数で得たリストを集計可能か

全エリアの判定も考えたんですが、
結果0の場合の処理が。。

List関数は関連レコードから結果を返しますから、
自己リレーションでも同じように照合させればいいことでしょう。

Offline

#7 2023-12-07 19:34:02

mirai
Member

Re: LIST関数で得たリストを集計可能か

すみませんお返事遅くなりました!
参考にさせて頂いてやってみます!
自己リレーションでやってみようかなと思うんですが

リストの元のテーブルで自己リレーションして、
計算フィールド
  エリア & ":" Count ( 自己リレーション::エリア )
として、
これのユニークなリストを得ればできますね。

このユニークなリストを得るというのはどういった処理をすれば可能ですか?

Offline

#8 2023-12-07 23:08:57

Shin
Member

Re: LIST関数で得たリストを集計可能か

元テーブルを触れるのでしたら、そちらで集計してしまうのが楽でしょう。
地域を一覧する集計フィールドを作り、UniqueValues ( GetSummary ( 集計フィールド ; 集計フィールド ) ) という計算フィールド “lst” を作ります。
次に計算フィールド(繰り返し) GetValue ( lst ; Get ( 計算式繰り返し位置番号 ) = 地域[1] と、それを個別に合計する集計フィールドを作ります。
lst とそのフィールドを組み合わせて表示すればいいです。

Offline

#9 2023-12-07 23:40:07

mirai
Member

Re: LIST関数で得たリストを集計可能か

できれば集計フィールドを作るのは避けたいところで悩んでおります。
フィールドを増やさずにできる方法はありますでしょうか。

実はこの過程は変数に設定して別のフィールドに展開する一コマです。
なので変数として設定する計算で出来ればいいなと思っていたんです。。。

Offline

#10 2023-12-08 00:19:56

Shin
Member

Re: LIST関数で得たリストを集計可能か

ならば、最初の回答の通りに、リストをwhile()でカウントするか、SQL使って求めればいいでは。例えば、

While ( 
[ 
	ttl = UniqueValues ( lst ) ;
	i = ValueCount ( ttl ) ;
	l = ""
] ; 
	i ; 
[ 
	t = GetValue ( ttl ; i ) ;
	l = List ( t & ":" & ValueCount ( FilterValues ( lst ; t ) ) ; l ) ;
	i = i - 1
] ; 
	Substitute ( l ; ¶ ; " " ) 
)

集計フィールドは、実データや別の構造に全く影響しないもので、多用しても無害ですよ。使い方を覚えないと損です。

Last edited by Shin (2023-12-08 13:27:05)

Offline

#11 2023-12-08 09:30:04

チポ
Member

Re: LIST関数で得たリストを集計可能か

私の前レスの自己リレーションは、
  現在の照合
  and
  エリア
で照合します。

>   エリア & ":" Count ( 自己リレーション::エリア )
> として、
> これのユニークなリストを得ればできますね

これは、
もう一つ自己リレーション2として、
  現在の照合
で照合して、
そのListのUniqueValueで得られますね。

Offline

#12 2023-12-09 14:48:39

mirai
Member

Re: LIST関数で得たリストを集計可能か

みなさんありがとうございました。

shinさんのwhile()で無事に思った結果が出ました!
ver14で時が止まっておりましたので感動しました。

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

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.107 seconds, 11 queries executed - Memory usage: 521.79 KiB (Peak: 526.33 KiB) ]