![]() 前へ |
![]() 次へ |
等価結合の場合、2つの表のキー値が一致する必要があります。完全外部結合の場合は、キー値が照合され、一致しないキー値については結果表にNULLが作成されます。左外部結合または右外部結合では、指定した表の行がすべて保持されます。
Oracle8iでは、次のように結合条件変数(+)を使用してSQLで外部結合を作成します。
SELECT ... FROM A, B WHERE A.key = B.key (+);
この例は左外部結合です。表Aの行は、一致する行が表Bになくても結合結果に含まれます。Oracle8iで完全外部結合を作成するには、複数のSQL文を使用する必要があります。
「式ビルダー」では、完全外部結合に次の構文を使用できます。
TABLE1.COL1 (+) = TABLE2.COL2 (+)
この構造は、Oracle8iではサポートされません。Oracle DatabaseはANSI SQL 1999準拠です。ANSI SQL 1999標準には、完全外部結合を実行するためのソリューション構文が含まれています。コード・ジェネレータでは、前述の式が次のようなANSI SQL 1999の完全外部結合文に変換されます。
SELECT ... FROM table1 FULL OUTER JOIN table2 ON (table1.col1 = table2.col2)
完全外部結合文はANSI SQL 1999に準拠しているため、生成コードがOracle9iデータベースに配布される場合にのみ有効です。Oracle8iデータベースに対して完全外部結合を指定すると、妥当性エラーになります。
完全外部結合と部分外部結合を1つのSQL文で一緒に使用できますが、AND条件またはAND/OR条件内で使用する必要があります。完全外部結合と部分外部結合をOR条件内で使用すると、予期しないAND条件となります。次に例を示します。
SELECT ... FROM table1 FULL OUTER JOIN table2 ON (A = B or C = D)
この条件は、Oracle ServerではA (+) = B (+) AND C = Dとして評価されます。
マッピングに完全外部結合を使用する手順は、次のとおりです。
「マッピングでジョイナ演算子を使用する手順」の手順1から4に従って、ジョイナ演算子を追加します。
「結合条件」プロパティの右にある省略記号ボタンをクリックし、「式ビルダー」を使用して完全外部結合の式を定義します。
「OK」をクリックして式ビルダーを閉じます。