2009年5月 8日

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

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

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

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


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

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

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

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

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

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

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

On Fri, 08 May 2009 00:42:35 +0900
柴垣 <akiro@xxxxx> 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@xxxxx
>
> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
>
>

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


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




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