5 返信 最新の回答 日時: Oct 14, 2009 6:01 AM ユーザー:f-goichi

    レコードを集約する方法

    f-goichi

      タイトル

      レコードを集約する方法

      フォーラムに投稿

      FileMaker Pro9 を使っています。

      ところで、集約(集計?)したレコードを作成するには、どのようにすればよいのでしょうか?

       

      ユーザーズガイドでは、集計フィールドを定義して、プレビューで見る方法があるようですが、

      明細テーブルから集約(集計)テーブルを作成するというような方法はあるのでしょうか。

      具体的には次のような処理内容を言っています。 

       明細テーブル

       id 項目01 項目02

       01 aaaaa 00010

       02 aaaaa 00020

       03 aaaaa 00030

       04 bbbbb 00040

       05 bbbbb 00050

          ↓

       集約(集計)テーブル

       id 項目01 項目02

       01 aaaaa 00060 (=00010+00020+00030)

       02 bbbbb 00090 (=00040+00090)

       

      以上 

        • 1. Re: レコードを集約する方法
          user6776
             Excelのピボットを使えば簡単にできます。
          分析する為に作るならそっちの方がいいかも。
          ですが、FileMakerでやるとすると下記みたいな設定をして、スクリプトでループを回せば作成できます。


          ◆テーブル:明細
          項目01
          数字

          ◆テーブル:集計
          項目01
          数字

          ◆リレーション
          項目01同士でリレーション。
          集計テーブル側に、関連レコードの作成にチェック


          ◆集計スクリプト
          レコード/検索条件/ページへ移動 [最初の]
          Loop
          フィールド設定 [集計::数字; 集計::数字 + 明細::数字]
          レコード/検索条件/ページへ移動 [次の; 最後まできたら終了]
          End Loop


          何をしているかというと、項目01でリレーションすることによって、集計テーブルにレコードが作成されます。
          次に、同じ項目01が登場した時に集計テーブルの数字に明細テーブルの数字に加算しています。(新たにレコードが作成されない)














          • 2. Re: レコードを集約する方法
            moulin
              

            テーブル同士でリレーションシップを組み、計算フィールドでSum関数を使ってみてはどうですか?

            • 3. Re: レコードを集約する方法
              f-goichi
                

              sago350様、moulin様、早速のご教授ありがとうございます。

              質問を当フォーラムに書き込んだあとも、いろいろ関連書籍を調べてみました。

              方法として、moulin様の方法と同様の書籍記事をみつけました。

              sago様、moulin様の教授頂きました方法で、現在作業中の当面の課題は解決しました。

              あらためて、お礼申し上げます。 

               

              ところで、集計テーブルとのリレーションを使わずに単純に1テーブルのみで集計(集約)する方法はないのでしょうか。

              集計テーブルを使用する場合、明細テーブル以外に集計テーブルのデータを準備しておく必要があると思います。 

              これは、要求されるデータ処理のケースによっては使えない場合があると思われます。

               

              明細テーブルのみで集計することは、一般のRDBでは簡単(普通)にできると思いますが、FileMakerProではこれに相当する操作(方法)はないのでしょうか。(関連書籍を調べていますが、見つかりません。)

               

              • 4. Re: レコードを集約する方法
                Hiro
                  

                > ところで、集計テーブルとのリレーションを使わずに単純に1テーブルのみで集計(集約)する方法はないのでしょうか。

                 

                もちろんできます。

                簡単には、集計レイアウトとプレビューを利用する方法です。これはヘルプなどで調べて下さい。

                ただこの方法はブラウズ画面では表示できませんので不便です。

                 

                代わって自己リレーションを使う集計法をご案内します。

                こちらは、ブラウズ画面に集計結果をポータル表示します。また必要なら、「関連レコードへ移動;のみ表示」で実体レコードを抽出することも簡単に出来ます。また、集計は全自動計算が可能です。

                一番難しいところは、集計キーのユニーク一覧化ですが、値一覧のユニーク化機能を応用します。

                 

                詳細説明は困難なのでサンプル「ピボット集計.zip」を以下のURLにアップしましたので、宜しかったらそちらをご参考ください。

                http://briefcase.yahoo.co.jp/bc/brghspr/lst?&.dir=/352b/3be1&.src=bc&.view=l

                 

                • 5. Re: レコードを集約する方法
                  f-goichi
                    

                  Hiro様、わざわざサンプル「ピボット集計」まで作成いただきまして深く感謝申し上げます。

                  ダウンロードして動作を確認させていただきました。

                  集計ボタンと全て表示ボタンで集計結果データと明細データが同一レイアウト内で変化するところなど感心しました。

                  まさに、当方が望む動作内容です。 

                  ただ、申し訳ないのですが、ただいまサンプルの作成内容を十分に理解しきれておりません。

                  理解できるように学習したいと思います。

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