初心者にもわかるファイルメーカーの
使い方

現在居るテーブルに関係なくデータが取得できる「ExecuteSQL」は「evaluate!」で出力すべし!

2019-07-29 |  

どうもどうも〜〜〜!
おはこんばんちは!(おはよう、こんにちは、こんばんは の意です)岩崎です。すっかり夏ですね…夏バテはいかがですか?大丈夫ですか?僕は“春夏秋冬バテ”で、常にバテております!しかし、暑さには負けてられません。がん“バッテ“いきたいと思います(うまい!)

さて、本日はこちらのファイルメーカーTipsです!

「ExecuteSQLで SELECT SUM は必要ない…(かも)」

みんな大好きSQLですね。まずは、ExecuteSQLってなんだよ!?という方のために簡単に概要を…。(にわか知識なので間違っていたら許してください)

データベースで使われる言語に「SQL」というのがありまして、規定の書き方をすればデータを取得できるという優れものです。これを、Filemakerで使えるようにするのが関数の「ExecuteSQL」なんです。

一番の特徴は「現在居るテーブルに関係なく」データが取得できる点ですね。例えば、「顧客マスタにいるけども、リレーションの繋がっていない伝票テーブルのデータを取る」…という使い方ができます。

さて、“規定の書き方”ですが…
例えば担当者の名前を取得するけど、20歳を超えている人のみを抽出する場合は…

SELECT =>このフィールドのデータが欲しいよ〜
FROM =>このテーブルの中にSELECTで指定したフィールドあるよ〜
WHERE =>こういうデータだけ欲しいよ〜 条件は?にして後で書くよ〜

てなもんです。慣れるとスラスラ書けるので調べてみてください。

さて…本題ですが、SELECT句には“SUM”という言葉をくっつけることができます。くっつけると、値を区切って取ってくるのではなく、合計して取得します。
こんな感じです。

これだと、2019/5/1からの伝票テーブル内の金額を合計できます!しかし…

遅いです…動作が。

そこで、いろいろな方法を試したところ、特定の条件下ですが、かなり速くなる方法があるようです!

(1)合計したい値をSUMではなく“+”区切りで取得します。
(2)それをEvaluateで合計します!

実際に検証してみましょう〜。

条件:3000件のレコードに入った金額を合計するだけ

方法1 「普通にSELECT SUM」

4秒ちょいですね!

方法2「evaluate!」

早あああああ!!!!!!!!!!!!!
ただし、このevaluateの方法は、対象レコードが大量にあると”?”で帰ってくるようです。
と、いうことで如何でしたでしょうか。

これから、「集計が遅くて悩んでいるんだよな〜」という方!
ぜひこの方法でやってみてくださいね〜。…ただし、大量のレコードの場合は…他の方法でお願いします。

以上!岩崎でした!また次回〜〜No life No filemaker ~~~!