[前][次][番号順一覧][スレッド一覧]

mysql:14836

From: ユウシステム 糸瀬 <ユウシステム 糸瀬 <itose@xxxxxxxxxx>>
Date: Fri, 08 May 2009 02:00:50 +0900
Subject: [mysql 14836] Re: テーブルごとの合計を求めるには

糸瀬と申します。初投稿させていただきます。
OSC2008福岡で坂井さんを通してこの会の存在を知り、ML参加させ
ていただいております。

柴垣さん、問題解決して良かったですね。

さて、少しこの件から脱線してしまうかもしれませんが、渡辺さん
のこの言葉が私としては引っかかりました。

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

私見になりますが、SQLで簡単にできることはSQLで済ませてしまう
方が良いと思っています。一概に言えないとは思いますが、今回の
ような場合では、SQLで済ませてしまった方がバグが少なく、仕様
変更に強く、何より楽なのでは?思いました。
ちなみに、私だったら平塚さんの方のSQLを書きます。
(スミマセン。初投稿から喧嘩売るつもりではないのですが・・・。)

サブクエリを使うということはそんなに複雑なのでしょうか・・?
ある一つのテーブルであると見立てて結合するだけのことだと思って
いるので、私は特に抵抗を感じないのですが、SQLにあまり慣れてい
ないと、やはりわかりにくいでしょうか。

何が言いたいかと申しますと、皆様も渡辺さんの意見と同じでしょう
か?とお尋ねしたいのです。「えっ!?」と思ったのは私だけでしょ
うか?世間の常識はそうだよ的な書き方でしたので・・。

柴垣さんはこの言葉に納得されておられるのですが、他の方のご意見
も伺いたいのです。
これからSQLに習熟しようとなさる方が、渡辺さんの言葉をこれからも
「鉄則」のように適用なさっていくのは、本当にいいのだろうか!?
と思ってしまった次第です。

私は、「基本として、SQLで簡単にできることはロジックでやらないよ
うに。パフォーマンスが悪い時だけロジックでやろう。」と教えてい
ます。これは私の経験から得た結論なので、間違っているのであれば、
今回を機に訂正しようと思います。

可能であれば皆様のご意見をお聞かせください。よろしくお願いいた
します。
--
糸瀬真一

On Fri, 08 May 2009 00:42:35 +0900
柴垣 <akiro@xxxxxxxxxx> wrote:
----------------------- Original Message -----------------------
> 渡辺さん、平塚さん、ありがとうございました。
> 
> 
> 渡辺さんのコード、(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@xxxxxxxxxx
> 
> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
> 
> 

--------------------- Original Message Ends --------------------

[前][次][番号順一覧][スレッド一覧]

     14831 2009-05-07 11:35 [柴垣 <akiro@xxxxxxxx] テーブルごとの合計を求めるには          
     14832 2009-05-07 11:50 ┣[Shuji Watanabe <shuj]                                       
     14833 2009-05-07 12:21 ┗[HIRATSUKA Sadao <hir]                                       
     14835 2009-05-08 00:42  ┗[柴垣 <akiro@xxxxxxxx]                                     
->   14836 2009-05-08 02:00   ┗[ユウシステム 糸瀬 <i]                                   
     14837 2009-05-08 09:42    ┗[柴垣 <akiro@xxxxxxxx]                                 
     14838 2009-05-08 10:00     ┗[Shuji Watanabe <shuj]                               
     14839 2009-05-08 10:59      ┗[ユウシステム 糸瀬 <i]