TOTALを表示するSQL文の考え方

今回は明細のTOTAL(合計金額)を表示するためのSQL文の考え方を解説します。順番よく考えると簡単にわかります。合計金額の計算には単価と数量が必要です。

【1】まずテーブルT08Detailsを確認します。このテーブルにはGOODS_CDとAMOUNT(数量)はありますが、PRICEがありません。PRICEはテーブルT06Goodsを参照する必要があります。

javascript-238.gif


【2】テーブルT08DetailsとT06Goodsを使い、計算に必要な最低限のフィールドだけを選択するSQL文は以下のようになります。

select SLIP_CD,PRICE,AMOUNT
from T08Details,T06Goods
where T08Details.GOODS_CD = T06Goods.GOODS_CD

実行結果
javascript-239.gif


【3】次は「単価×数量」の計算をして、計算結果の列名を「calc」とするSQL文です。

select SLIP_CD,PRICE,AMOUNT,(PRICE * AMOUNT) as calc
from T08Details,T06Goods
where T08Details.GOODS_CD = T06Goods.GOODS_CD

実行結果
javascript-240.gif


【4】TOTALを表示するのは伝票ごとですから、SLIP_CDを抽出条件にレコードを絞りこんでみましょう。

select SLIP_CD,PRICE,AMOUNT,(PRICE * AMOUNT) as calc
from T08Details,T06Goods
where T08Details.GOODS_CD = T06Goods.GOODS_CD
and SLIP_CD = 23

実行結果
javascript-241.gif


【5】最終的に必要なのは「単価×数量」の合計です。合計は「sum」を使います。ちなみに今回は別名を付けていません。別名を付けないとシステムが勝手に名前を付けます。

select sum(PRICE * AMOUNT)
from T08Details,T06Goods
where T08Details.GOODS_CD = T06Goods.GOODS_CD
and SLIP_CD = 23

実行結果
javascript-242.gif

このように1行1列のデータになります。この値はプログラムの中でrecordSet(0)で簡単に取得できます。0は1列目を表しています。


【6】あとはSQL文をプログラムに組み込みます。

最終的に組み立てたいSQL文です。
select sum(PRICE * AMOUNT) from T08Details,T06Goods where T08Details.GOODS_CD = T06Goods.GOODS_CD and SLIP_CD = 23

全体を「"」(ダブルクォーテーション)で囲みます。
"select sum(PRICE * AMOUNT) from T08Details,T06Goods where T08Details.GOODS_CD = T06Goods.GOODS_CD and SLIP_CD = 23"

値をコントロールや変数に置き換えます。
"select sum(PRICE * AMOUNT) from T08Details,T06Goods where T08Details.GOODS_CD = T06Goods.GOODS_CD and SLIP_CD = selectSlip.value"

コントロールや変数の前後に半角空白を入れ切り離します。
"select sum(PRICE * AMOUNT) from T08Details,T06Goods where T08Details.GOODS_CD = T06Goods.GOODS_CD and SLIP_CD = selectSlip.value"

コントロールや変数以外の文字列部分を「"」(ダブルクォーテーション)で囲みます。
"select sum(PRICE * AMOUNT) from T08Details,T06Goods where T08Details.GOODS_CD = T06Goods.GOODS_CD and SLIP_CD =" selectSlip.value

コントロールや変数と文字列を「+」で結合します。
"select sum(PRICE * AMOUNT) from T08Details,T06Goods where T08Details.GOODS_CD = T06Goods.GOODS_CD and SLIP_CD =" + selectSlip.value

変数mySqlに代入して1行のプログラムの終わりをあらわす「;」(セミコロン)を付けます。
var mySql = ""select sum(PRICE * AMOUNT) from T08Details,T06Goods where T08Details.GOODS_CD = T06Goods.GOODS_CD and SLIP_CD =" + selectSlip.value;

上記のままでもかまいませんが、SQL文が長いので改行して表す方法は以下のようになります。今回は文字列の結合を「+=」で表してみました。

var mySql = "select sum(PRICE * AMOUNT) ";
mySql += "from T08Details,T06Goods ";
mySql += "where T08Details.GOODS_CD = T06Goods.GOODS_CD ";
mySql += "and SLIP_CD = " + selectSlip.value;


スポンサードリンク

スポンサードリンク






JavaScript初心者入門講座TOPへ