2008年11月15日

ファイルメーカーでの集計~中間テーブルのはなし~(2)

では、今回は中間テーブルについて、本格的に話していきます。

分かりやすいので、顧客別売上ランキングを例にしてみます。


普通、売上伝票や請求書をつくるためのシステムを作るとなると、

【顧客マスタ】
 というテーブルに、
「顧客ID」、「顧客番号」、「顧客名」、「顧客住所」、「顧客電話番号」・・・
 というようなフィールドを作り、

【売上】
 というテーブルに
「売上ID」、「売上伝票番号」、「売上日」、「顧客KEY」、「売上金額計」、「消費税」・・・・
 って感じのフィールドを並べますよね。
分かりやすいように「今回は「顧客名」も持たせておきます。

ほかに【売上明細】や【担当営業マスタ】など様々なテーブルも派生していきますが、今回は省略します。
 
  
さて、では上記のような感じで作られたシステムにできた【顧客マスタ】のデータは以下のような感じになっています


「顧客ID」、「顧客番号」、「顧客名」、「顧客住所」
1、080001、ぴかいち有限会社、東京都渋谷区・・・・
2、090001、浅野工務店、神奈川県川崎市宮前区・・・・
3、080002、ぴかぴかファイナンス、東京都渋谷区・・・

同様に【売上】には

「売上ID」、「売上伝票番号」、「顧客KEY」、「顧客名」「売上金額計」
1、080023、1、2008/11/10、ぴかいち有限会社、500,000、・・・
2、080024、1、2008/11/15、ぴかいち有限会社、280,000、・・・
3、080025、2、2008/11/15、浅野工務店、35,000・・・・
4、080026、3、2008/11/20、ぴかぴかファイナンス、600,000・・・
5、080027、1、2008/12/1、ぴかぴかファイナンス、30,000・・・
6、080028、1、2008/12/12、ぴかいち有限会社、40,000・・・
7、080029、1、2008/12/15、ぴかぴかファイナンス、120,000・・・

って感じですね。


さてこの二つのテーブルの間に、テーブルを一つ追加します。

仮に【顧客月別売上集計】テーブルとします。

通常作成されるデータモデルのテーブルとテーブルの間に作るので
「中間テーブル」と私は呼んでいます。

フィールドとしては
「集計ID」、「顧客KEY」、「年月KEY」、・・・
です。
上記の売上同様に分かりやすいように「顧客名」も持たせておきます。


データとしては、以下の感じです。

「集計ID」、「顧客KEY」、「年月KEY」
1、1、ぴかいち有限会社、2008年11月、・・・
2、2、浅野工務店、2008年11月
3、3、ぴかぴかファイナンス、2008年11月
4、1、ぴかいち有限会社、2008年12月、
5、2、浅野工務店、2008年12月
6、3、ぴかぴかファイナンス、2008年12月
7、1、ぴかいち有限会社、2009年01月、・・・
8、2、浅野工務店、2009年01月
9、3、ぴかぴかファイナンス、2008年11月

もう分かりますよね?




このテーブルに対して、【売上】テーブルを、「顧客KEY」と「年月」の二つのフィールドでリレーションを組むと、
(蛇足ですが、【売上】に「売上日」から計算する「年月」フィールドを追加してください)
顧客別月間売上がsum関数で集計が出来ます。


「集計ID」、「顧客KEY」、「年月KEY」、「月間売上」
1、1、ぴかいち有限会社、2008年11月、780,000
2、2、浅野工務店、2008年11月、35,000
3、3、ぴかぴかファイナンス、2008年11月、600,000
4、1、ぴかいち有限会社、2008年12月、40,000
5、2、浅野工務店、2008年12月、0
6、3、ぴかぴかファイナンス、2008年12月、150,000
7、1、ぴかいち有限会社、2009年01月、0
8、2、浅野工務店、2009年01月、0
9、3、ぴかぴかファイナンス、2009年1月、0


あとは、簡単です。
このデータを表示するレイアウトを作ればいい。

年月で検索して、月間売上でソートすれば、売上ランキングの出来上がりです。

ちなみに、顧客で検索して、年月でソートすれば、顧客の売上傾向が分かります。

ついでにいうと、同様に年間ランキングも作れますし、

顧客に属性を付けて、顧客地域別売上や、顧客属性別売上なんかも簡単ですね。



で、ですね。
その【顧客月別売上集計】に
「いつ、どうやって、集計用のレコードを作るんだよ」
ってことになります。

それは、次回お話します。


ご相談・お見積りは無料です。まずはご連絡ください

メールでのお問合せはこちら

posted by riki at 20:48| 開発者日記 | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。