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]