外部結合について
外部結合というのは、表と表を結合するという事で
FROM句に書くべきことと思うのですが、
なぜWHERE句(カラム毎に指定)で指定するのでしょうか?
例えば、
テーブルA
No|Kind|Name|
-------------
1|1 |A |
1|2 |B |
2|1 |C |
2|2 |D |
テーブルB
No|Kind|Data|
-------------
1|1 |10|
外部結合で
SELECT A.No, A.Kind, A.Name, B.Data
FROM A,B
WHERE A.No = B.No(+)
AND A.Kind = B.Kind(+)
とすると
No|Kind|Name|Data|
------------------
1|1 |A |10|
1|2 |B |NULL|
2|1 |C |NULL|
2|2 |D |NULL|
となります。
A.NoがB.NoになくてもOKで、Kindは
完全に一致しないとだめという意味で
SELECT A.No, A.Kind, A.Name, B.Data
FROM A,B
WHERE A.No = B.No(+)
AND A.Kind = B.Kind
とした場合、
No|Kind|Name|Data|
------------------
1|1 |A |10|
2|1 |C |NULL|
となるのであれば納得いくのですが、
結果は↓なるようです。
No|Kind|Name|Data|
--------------------------
1|1 |A |10|
(+)を一つも付けてない場合と
同じ動作になるようです。
テーブルAとテーブルBを結合するとき、
「外部結合する場合はWHERE句で指定する選択の条件全てに(+)を付ける」
「外部結合をしない場合はWHERE句で指定する選択の条件全てに(+)を付けない」
であれば、カラム毎に外部結合演算子を指定する意味が無いと思うのですが。
どなたか、カラム毎に外部結合演算子を指定する意味をご教授下さい。
宜しくお願いします。