![]() 前へ |
![]() 次へ |
結合条件には集計関数を含めないでください。
ジョイナに使用可能な入力グループの数に制限はありませんが、出力グループは1つのみです。
ジョイナの入力グループの順序が結合順序として使用されます。ANSI結合とOracle結合の主な違いは、ANSI結合では結合順序を明確に指定する必要があることです。Oracle結合の場合、順序指定は不要です。
SELECT ...
FROM T1 FULL OUTER JOIN T2 ON (T1.A=T2.A)
JOIN T3 ON (T2.A=T3.A);
T1、T3、T2のような別の順序で入力グループを作成する場合、Warehouse Builderでは次のように生成されます。
SELECT ...
FROM T1 JOIN T3 ON (1=1)
JOIN T2 ON (T1.A=T2.A and T2.A=T3.A);
T1とT3の結合時には、結合条件は指定されません。Warehouse Builderにより条件1=1(特にブールのtrue)が入力され、指定した2つの条件を使用してT2が結合されます。
フィルタ条件は結合後に適用されます。たとえば、次の結合を考えてみます。
Input1.c --- + Input2.c --- +---> Joiner Input3.c --- +
この結合に次の条件が適用されるとします。
条件1: Input1.c (+) = Input2.c (+)
条件2: Input2.c = Input3.c
条件3: Input1.c is null
最初の2つの条件はtrue結合ですが、第3の条件はフィルタ条件です。ANSIコードを生成する場合、結合条件が次のように解析されます
select ... from Input1 full outer join Input2 on (Input1.c = Input2.c) join Input3 on (Input2.c = Input3.c) WHERE Input1.c is not null;