ご使用のブラウザはJavaScriptをサポートしていません。このヘルプ・ページを正しく表示するにはJavaScriptが必要です。 副問合せフィルタ演算子
ヘッダーをスキップ
前へ
前へ
 
次へ
次へ

副問合せフィルタ演算子

副問合せフィルタ演算子を使用して、副問合せの結果に基づいて行をフィルタ処理できます。行をフィルタ処理するために使用可能な条件は、EXISTS、NOT EXISTS、INおよびNOT INです。

この画像の説明は前後のテキストにあります。
画像subquery_filter_oper.gifの説明

たとえば、EMP表には従業員データが含まれます。副問合せを使用して、別の表から一連のレコードをフェッチしてから、条件EXISTS、NOT EXISTS、INまたはNOT INの1つを使用してEMP表の行をフィルタ処理できます。

副問合せフィルタ演算子には、入力グループINGRP1が1つと入力/出力グループINOUTGRP1が1つ含まれます。INGRP1は、ソース・データのフィルタ処理に使用される副問合せを表すオブジェクトからマップされます。データのフィルタ処理に使用されるデフォルト条件はEXISTSです。これは、INGRP1の左側に表示される「E」によって示されます。この条件は要件に基づいて変更できます。グループINOUTGRP1は、フィルタ処理が必要なソース・データ・セットからマップされます。フィルタ処理されたデータは、このグループの出力として使用できます。

副問合せフィルタ演算子を使用してマッピングを作成する手順は、次のとおりです。

  1. 副問合せフィルタ演算子をマッピングのキャンバスにドラッグ・アンド・ドロップします。

  2. フィルタ処理するソース属性を副問合せフィルタ演算子の入力/出力グループINOUTGRP1に接続します。

  3. 副問合せとして使用するオブジェクトから必要な属性を副問合せフィルタ演算子のグループINGRP1に接続します。

  4. 副問合せ演算子のヘッダーを選択します。

    プロパティ・インスペクタに副問合せフィルタ演算子のプロパティが表示されます。

    デザイン・センターにプロパティ・インスペクタが表示されない場合、「表示」メニューからプロパティ・インスペクタを選択します。

  5. 「副問合せフィルタ入力ロール」フィールドで、入力行をフィルタ処理するために使用する条件を選択します。使用可能なオプションは、「既存」、「入力」、「存在しない」または「次に含まれない」です。

  6. フィルタ条件が必要な場合、「副問合せフィルタ条件」フィールドの省略記号をクリックし、「式ビルダー」を表示します。このインタフェースを使用して、入力行セットと副問合せによって戻される行セットを比較するために使用するフィルタ条件を指定します。

    入力ロールがINまたはNOT INである場合、フィルタ条件は必要ありません。フィルタ・ロールがEXISTSおよびNOT EXISTSの場合、ソース問合せをEXISTSフィルタリング副問合せに関連付けるフィルタ条件を指定する必要があります。

  7. 入力ロールがINまたはNOT INである場合、各入力属性のプロパティを編集し、副問合せの入力/出力グループから一致する属性を選択します。これにより、ソース入力問合せの入力属性が各副問合せグループ属性に関連付けられるため、ソース問合せがフィルタリング副問合せに関連付けられます。

  8. 副問合せフィルタ演算子の入力/出力グループをターゲットに接続します。

副問合せフィルタ演算子の簡単な例を示します。このマッピングでは、信用限度が一定の値を超えている顧客に関する注文データがCUST_TGTというターゲット表にロードされます。注文データは、ORDERSおよびORDERS_ITEMS表に格納されます。これらの表の注文データの結合には、ジョイナ演算子が使用されます。副問合せフィルタ演算子を使用して、CUSTOMERS表に対する副問合せの結果に基づいて注文データをフィルタ処理します。

比較に必要なCUSTOMERS表の属性は、副問合せフィルタ演算子の入力グループにマップされます。ジョイナ演算子の結果として表される注文データは、副問合せフィルタ演算子の入力/出力グループにマップされます。副問合せフィルタ演算子の「副問合せフィルタ条件」プロパティは、行の比較に使用される条件を表すために設定されます。この例では、「副問合せフィルタ条件」には次の条件が指定されています。

INGRP1.CUSTOMER_ID  =  INOUTGRP1.CUSTOMER_ID  AND  INGRP1.CREDIT_LIMIT  >= 75000