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

mysql:14619

From: chuuken kenkou <chuuken kenkou <ken_ken_1962@xxxxxxxxxx>>
Date: Wed, 30 Jul 2008 17:19:12 +0900
Subject: [mysql 14619] Re: 2段階以上の外部結合のやり方


話が変な方向になっているような。。。

> ちなみに、Oracle式に書いた場合、微妙に解釈が違うので注意が必要です。
> --
> FROM
> A, B
> WHERE
> A.hoge_id = B.id (+)
> AND B.code = '001'
> --
> これを慣れてない人は、こんな感じにOUTER JOINしてしまいます。
> --
> A
> LEFT OUTER JOIN B
> ON (
> A.hoge_id = B.id
> AND B.code = '001'
> )
> このようなOracle式書き方をそのままON句に入れると、ばっちり無視されるのでご注意を。
> ※ON句には結合条件のみが記述できるので、抽出条件は書いちゃダメ
>


「ON句に入れると、ばっちり無視される」のではなく、その条件式も結合条件として使われます。
つまり、上記の例では、B.code='001'の行のみB側に存在することになり、それ以外のBの行は存在せず、nullでAの行に結合されます。

ONでなく、WHEREに「B.code='001'」を指定すると、結合結果に対して評価されるような動きになります。
(内部的には、LEFT JOINがINNER JOINに変わる)

ONでは結合条件、WHEREでは制限条件を指定するのですが、ONで定数を値とした条件を指定するケースはありますので念のため。
_________________________________________________________________
イカ天やWe舞台のWebオーディション、夢をかなえるチャンス!詳しくはこちら
http://transform.jp.msn.com/

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

     14608 2008-07-30 11:30 [nobu <mininobu@xxxxx] 2段階以上の外部結合のやり方             
     14609 2008-07-30 11:44 ┗[岡本 基 <okamoto@xx]                                       
     14610 2008-07-30 11:53  ┗[IIDA Yosiaki <y-iida]                                     
     14611 2008-07-30 11:59   ┣[岡本 基 <okamoto@xx]                                   
     14612 2008-07-30 12:02   ┗[nobu <mininobu@xxxxx]                                   
     14613 2008-07-30 12:44    ┗["Shuji Watanabe" <sh]                                 
     14614 2008-07-30 12:57     ┗[nobu <mininobu@xxxxx]                               
     14615 2008-07-30 13:51      ┗[IIDA Yosiaki <y-iida]                             
     14616 2008-07-30 14:30       ┗["Shuji Watanabe" <sh]                           
     14617 2008-07-30 14:51        ┣[nobu <mininobu@xxxxx]                         
     14618 2008-07-30 14:58        ┃┗[岡本 基 <okamoto@xx]                       
->   14619 2008-07-30 17:19        ┗[chuuken kenkou <ken_]