みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
あるテーブルのあるフィールドの最大値を求めるのに最も効率的な方法はどのようなものでしょうか?
今回はあるテーブルのシリアル番号の最大値を取得したいと考えました。
レコード数は約12万件。
試してみたのは、以下の通りです。
テーブルAのテーブルオカレンスとして、テーブルAとテーブルA_テーブルAを作る。
それを次の様にリレーション。
テーブルA テーブルA_テーブルA
シリアル番号------[X]------シリアル番号
それでテーブルAに、
最大シリアル番号 グローバル、from テーブルA、=Max( テーブルA_テーブルA::シリアル番号 )
というフィールドを定義して、レイアウトで表示したところ、空欄のままでした。
ところが、グローバル格納のチェックを外したら望んだ値が得られました。
ただ、本来なら値は一つ得られれば十分ですし、各レコード毎に値を保持するのもどうかと思いました。
グローバル変数にはこういう使い方はできないという制約があるのでしょうか?
そのフィールドでソートして一番最初か一番最後を調べたら良いのでは。
集計フィールドでもいいですけど。
グローバル計算フィールドは結果が保存されるので、その計算式だと定義した時の値のまま変らないのでは。
Evaluate("Max( テーブルA_テーブルA::シリアル番号 )" ; シリアル番号 )
にするとか?
レコード削除で変更されないか。。。
効率がいいのは集計フィールドか、値一覧を定義ですかね。ソートやSQLは遅かった気がする。
自動入力のフィールドオプションなら、
GetNextSerialValue ( ファイル名 ; フィールド名 )
で「次の値」がわかりますが。
単純にフィールド定義を、
最大シリアル番号 集計 =シリアル番号最大値
とすることで、目的が達成できました。
ありがとうございました。
Pages: 1
[ Generated in 0.024 seconds, 9 queries executed - Memory usage: 507.39 KiB (Peak: 518.45 KiB) ]