XML メッセージでのデータの結合

FROM 文節は、1 つ以上の項目を持つことができます。FROM 文節に複数の項目を指定すると、通常のデカルト積結合効果を生成します。これはすなわち、2 つのリスト内の項目のすべての組み合わせについて、項目が 1 つずつ結果内に作成されます。この結合効果は、標準 SQL と同じものです。

Invoice メッセージには、顧客、支払い、顧客の購買に関する詳細情報のセットが含まれています。次の ESQL ステートメントをコード化して入力 Invoice メッセージを処理すると、

SET OutputRoot.XML.Items.Item[] = 
   (SELECT D.LastName, D.Billing,
           P.UnitPrice, P.Quantity 
    FROM InputBody.Invoice.Customer[] AS D,
         InputBody.Invoice.Purchases.Item[] AS P);

次の出力メッセージが生成されます。

<Items>
 <Item>
  <LastName>Smith</LastName>
  <Billing>
   <Address>14 High Street</Address>
   <Address>Hursley Village</Address>
   <Address>Hampshire</Address>
   <PostCode>SO213JR</PostCode>
  </Billing>
  <UnitPrice>27.95</UnitPrice>
  <Quantity>2</Quantity>
 </Item>
 <Item>
  <LastName>Smith</LastName>
  <Billing>
   <Address>14 High Street</Address>
   <Address>Hursley Village</Address>
   <Address>Hampshire</Address>
   <PostCode>SO213JR</PostCode>
  </Billing>
  <UnitPrice>42.95</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
 <Item>
  <LastName>Smith</LastName>
  <Billing>
   <Address>14 High Street</Address>
   <Address>Hursley Village</Address>
   <Address>Hampshire</Address>
   <PostCode>SO213JR</PostCode>
  </Billing>
  <UnitPrice>59.99</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
</Items>

結果は 3 つあります。これは、最初のリスト内の説明の数 (1) を 2 番目のリスト内の価格の数 (3) で掛けた数です。結果は 2 つのリストのすべての組み合わせを、系統的に作業します。そのことは、それぞれの結果から選択された LastName および UnitPrice フィールドを見れば分かります。

LastName Smith   UnitPrice 27.95
LastName Smith   UnitPrice 42.95
LastName Smith   UnitPrice 59.99

リストと非リスト、また 2 つの非リストなどに出現するデータを結合することができます。以下に例を示します。

OutputRoot.XML.Test.Result1[] =
  (SELECT ... FROM InputBody.Test.A[], InputBody.Test.b);
OutputRoot.XML.Test.Result1 =
  (SELECT ... FROM InputBody.Test.A, InputBody.Test.b);

それぞれの [] の位置に注目してください。FROM リストには、項目を 1 つか 2 つだけでなく、いくつでも指定できます。いずれかの項目が項目のリストを示すように [] を指定する場合、SELECT は結果のリストを生成します (リストには 1 つの項目しか含めることができませんが、SELECT は項目のリストを戻す可能性があります)。1 つの組み合わせだけが一致することを WHERE 文節が保証することが知られている場合、代入先もリストを指定するか (同じく [] で終わる)、または THE キーワードを使用しなければなりません。

関連概念
メッセージ・フローの概要
ESQL の概要
メッセージのモデル化
関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
ESQL ファイルの管理
関連資料
Compute ノード
Database ノード
Filter ノード
ESQL 参照
SELECT 関数
SET ステートメント
サンプル・メッセージ
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak05820_