[tuigwaa-user:43] Re: 【質問】集計値について

Nishioka Yuhei nishioka.yuhei @ gmail.com
2006年 3月 30日 (木) 11:21:06 JST


西岡です。尾上さん、いつも、ご質問ありがとうございます。
ご返答が遅くなって申し訳ございません。

> 現在、下記のようなテーブル構造を持つシステムで
> Table Aのレコード指定ページ内で
>「 A.全体本数 - (「ステータス=出庫」のB.出庫本数)」を
> 表示する事は可能でしょうか?

結論から申し上げますと、Tuigwaa ver.0.8 では難しいです。
ver.0.8 にて、同じようなことしようとすると、以下の通りです。

(1) テーブルB に対して、 "ソフト.1" "出庫" であるフィルタAを作る。
(2) テーブルB に対して、"フィルタA" "出庫本数の合計"である集計値Aを作る。
(3) テーブルA のソフト1 のレコード指定ページに飛ぶ。
(4) &calc(-, &data(テーブルA,総数), &value(テーブルB,集計値A)); とする。

※ calc は四則演算をするためのプラグインで、data プラグインと
  value プラグインをネストしています。

これで、ソフト1 の「A.全体本数 - (「ステータス=出庫」のB.出庫本数)」を表示できます。
ただ、これではソフト2 の場合が間違った値が表示されます。

これへの対処は value プラグインを変更して以下のようにしたいのですが、
いかがでしょうか?

(1) テーブルB に対して、  "出庫" であるフィルタAを作る。
.... (2)(3) は先ほどと同じ.....
(4) &calc(-, &data(テーブルA,総数), &value(テーブルB,集計値A, ID)); とする。

value プラグインの 3つめの引数に関連データ( 外部キー )を設定すると
そのレコードが指定されているか調べて指定されていれば、集計 SQL に
そのレコードのイコール文を付け足します。つまり、ソフト.1 のレコード指定
ページであればソフト1の出庫本数、ソフト2のレコード指定ページであれば、
ソフト2の出庫本数を表示できるようになります。これと calc を組み合わせて
「A.全体本数 - (「ステータス=出庫」のB.出庫本数)」が実現できると
思います。

# &calc(-, &data(テーブルA,総数), &value(テーブルB,集計値A, ID));
# それにしても、これって複雑すぎる。なんとか、うまい入力補助を作らないと・・。

何か他にいい方法があればご教授いただければと思います。
Tuigwaa ver.0.9 までには対応したいと思っています。
何卒、よろしくお願いいたします。

西岡悠平


06/03/29 に t-onoue @ ins-hitachi.co.jp<t-onoue @ ins-hitachi.co.jp> さんは書きました:
> 尾上です。
> 集計値について質問があります。
>
> 現在、下記のようなテーブル構造を持つシステムでTable Aのレコード指定ページ内で
> 「A.全体本数 - (「ステータス=出庫」のB.出庫本数)」を表示する事は可能でしょうか?
>
> そのページで該当の製品があと何個出庫可能かを表示させたいので、色々集計やらフィルタやらを駆使しているんですがどうも上手くいきません。
> 何かうまい方法があれば教えていただけると助かります。
> 宜しくお願いします。
>
> Table A(マスタ情報テーブル)
> |ID      |全体本数|
> |ソフト1|      10|
> |ソフト2|       2|
>
> Table B(出庫履歴情報テーブル)
> |ID   |ステータス|出庫本数|
> |ソフト1|出庫      |       5|
> |ソフト2|返却済み  |       1|
> |ソフト1|出庫      |       2|
> |ソフト1|返却済み  |       1|
>
>
> ============================
> 尾上利則(Onoue Toshinori)
> ============================
> _______________________________________________
> tuigwaa-user mailing list
> tuigwaa-user @ ml.seasar.org
> https://www.seasar.org/mailman/listinfo/tuigwaa-user
>


tuigwaa-user メーリングリストの案内