2009年5月 7日

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

渡辺です。
なんでSQLでやらなければいけないか、疑問ですが・・・

select m.name, sum(m.uri), sum(m.nyu)
from
(
(select name, kingaku as uri, 0 as nyu from u)
union

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

こんな感じで可能は可能だと思います。
#動作は未確認です
普通は別々に習得してプログラムでマージするなりする方が単純で解りやすく、バグも少ないしし、仕様変更にも強いと思いますよ。

2009/05/07 11:35 柴垣 <akiro@xxxxx>:
> 柴垣といいます。いつも勉強させていただいています。
> sqlの書き方の投稿が続いているので、それに乗っかって・・
>
> 以下のような3つのテーブルがあったときに
>
> 名前テーブル:T
> Name
> A
> B
>
> 売上テーブル:U
> Name Kingaku
> A 1000
> A 2000
> B 2000
> B 3000
> B 1000
>
> 入金テーブル:N
> Name Kingaku
> A 1000
> A 1000
> A 2000
> B 3000
> B 4000
>
> 次のようなテーブルごとの集計を一つのクエリーで作る方法は
> あるのでしょうか。
>
> 求めたい結果セット
> Name UriageGokei NyukinGokei
> A 3000 4000
> B 6000 7000
>
>
> ※ 例えば次のように書くと、重複して合計を取ってしまいます。
> select T.Name,
> sum(U.Kingaku) as UriageGokei,
> sum(N.Kingaku) as NyukinGokei
> from T
> left join U on T.Name=U.Name
> left join N on T.Name=N.Name
> group by T.Name;
>
>
> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
>
> 柴垣  akiro@xxxxx
>
> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
>
>
>
>

--
================================
Shuji Watanabe (skypeId: shuji.w6e)
Blog:
http://d.hatena.ne.jp/shuji_w6e/
Labo:
http://www.deathmarch.jp/
Community:
http://www.sapporo-java.org/


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




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