分かりやすいので、顧客別売上ランキングを例にしてみます。
普通、売上伝票や請求書をつくるためのシステムを作るとなると、
【顧客マスタ】
というテーブルに、
「顧客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
あとは、簡単です。
このデータを表示するレイアウトを作ればいい。
年月で検索して、月間売上でソートすれば、売上ランキングの出来上がりです。
ちなみに、顧客で検索して、年月でソートすれば、顧客の売上傾向が分かります。
ついでにいうと、同様に年間ランキングも作れますし、
顧客に属性を付けて、顧客地域別売上や、顧客属性別売上なんかも簡単ですね。
で、ですね。
その【顧客月別売上集計】に
「いつ、どうやって、集計用のレコードを作るんだよ」
ってことになります。
それは、次回お話します。
ラベル:ファイルメーカーの限界 ファイルメーカー