![]() 前へ |
![]() 次へ |
ターゲット・ウェアハウスがOracle 9i以降のリリースをベースとしている場合、ジョイナ演算子では完全外部結合もサポートされます。完全外部結合条件を指定するには、関係演算子の両側に(+)記号を付ける必要があります。関係演算子には、等号のみでなく他の演算子(>、<、!=、>=、<=など)も使用できます。
T1.A (+) = T2.B (+)
この完全外部結合の結果は次のとおりです。
条件T1.A = T2.Bを満たすソースT1の行およびT2の行。
この条件を満たさないソースT1の行。T2に対応する列にNULLが移入されます。
この条件を満たさないソースT2の行。T1に対応する列にNULLが移入されます。
T1.A = T2.B (+)のような部分外部結合にOracle SQL構文を使用する場合は、関係演算子の両側に(+)記号を使用すると無効なOracle SQL構文になります。ただし、2つの(+)記号を含む条件はANSI SQL構文に変換されます。次に例を示します。
SELECT ... FROM T1 FULL OUTER JOIN T2 ON (T1.A = T2.B);
完全外部結合を使用する場合は、次の点に注意してください。
Oracle9iより前のリリースの場合は、完全外部結合条件を指定しないでください。
ANSI結合構文が生成されるのは、ジョイナに完全外部結合条件を指定した場合のみです。それ以外の場合は、Oracle固有の次の結合構文が生成されます。
SELECT ... FROM T1, T2 WHERE T1.A = T2.B;
完全外部結合条件と結合条件の両方を同じジョイナで指定できます。ただし、同じソースに対して両方の条件を指定した場合、コード生成には強い方の結合タイプが使用されます。たとえば、次のように指定するとします。
T1.A(+) = T2.A(+) and T1.B = T2.B
T1.B = T2.BはT1とT2の間の完全外部結合条件よりも強いため、Warehouse Builderでは完全外部結合のかわりに結合文が生成されます。
完全外部結合条件と部分外部結合条件を同じジョイナで指定することはできません。完全外部結合を指定する場合、その結合条件の他の部分では部分外部結合を指定できません。たとえば、T1.A (+) = T2.A (+) and T2.B = T3.B (+) は無効です。