2008年7月30日

[mysql 14614] Re: 2段階以上の外部結合のやり方

近藤(nobu)です。

わたなべさん、ご回答ありがとうございます。
ご提示いただいた「単純に次のように・・・」の内容で期待通りの結果を得ることが
できました。Oracleの(+)で慣れてしまったために、MySQLのやり方には若干
違和感がありますが・・・。MySQLの結合条件の書き方は基底テーブルにぶら下
げるような書き方をするんですね。

>結合条件はFROM句にまとめてしまって、

私も混在は気持ち悪いなーと思ってました。FROM句一本でまとめる方向に
したいと思います。

> ※Oracleどっぷりの人とよくぶつかりますけど、(+)は嫌い・・・

結合"条件"なのでWHERE句で宣言できるべきだ!ということなんでしょうか。
このような基本的な作法がDBによって異なるというのもちょっと考えものです
よね。個人的には、"JOIN句"というように結合条件を明示的に記述する句が
あってもいいのになーと思いました。

以上、ありがとうございました。


2008/07/30 12:44 Shuji Watanabe <shuji.w6e@xxxxx>:
> わたなべです。
>
> 単純に次のように外部結合するのではマズイんでしょうか?
> FROM
> recipe_header rh1
> left outer join category cg
> on (
> rh1.category = cg.id
> )
> left outer join recipe_material rm
> on (
> rh1.id = rm.id
> )
> left outer join unit ut
> on (
> rm.unit_id = ut.id
> )
>
> ちなみに最初のSQLですけど、
> FROM
> recipe_header rh1
> left outer join category cg on (rh1.category = cg.id)
> left outer join recipe_material rm on (rh1.id = rm.id)
> inner join unit ut on (rm.unit_id = ut.id)
> というように、結合条件はFROM句にまとめてしまって、
> WHERE句に結合条件的な抽出条件は混ぜない方がいいと思います。
> ※Oracleどっぷりの人とよくぶつかりますけど、(+)は嫌い・・・
>
>


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




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