2009年5月 8日

[mysql 14835] Re: テーブルごとの合計を求めるには

渡辺さん、平塚さん、ありがとうございました。


渡辺さんのコード、(allだけこちらで追加)

> select m.name, sum(m.uri), sum(m.nyu)
> from
> (

> (select name, kingaku as uri, 0 as nyu from u)
> union all
> (select name, 0 as uri, kingaku as nyu from n)
> ) m
> group by m.name

そして平塚さんのコード、

> select T.name, UG.UriageGokei, NG.NyukinGokei
> from
> T
> left outer join
> (select name, sum(kingaku) UriageGokei from U group by name) UG
> on T.name = UG.name
> left outer join
> (select name, sum(kingaku) NyukinGokei from N group by name) NG
> on T.name = NG.name

ともに、求めたい結果セットが得られました。


渡辺さんが、以下のように書かれていましたが、

> なんでSQLでやらなければいけないか、疑問ですが・・・
> 普通は別々に習得してプログラムでマージするなりする方が単純
> で解りやすく、バグも少ないしし、仕様変更にも強いと思いますよ。

確かにその通りだと思います。今回は既存のプログラムの修正だったため
sqlの書換えだけでなんとかならないかと思ったのですが、上記のSQLの
ようにサブクエリーが必要となることを考えると、かえって複雑になって
しまう気がします。どうもありがとうございました。


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

柴垣  akiro@xxxxx

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/


投稿者 xml-rpc : 2009年5月 8日 00:42
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/84874
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。