Verknüpfen von Daten in einer XML-Nachricht

Die FROM-Klausel kann mehr als ein Element enthalten. Durch die Angabe mehrerer Elemente in der FROM-Klausel wird der übliche kartesische Produktverknüpfungseffekt erzeugt, d. h., das Ergebnis enthält ein Element für alle Kombinationen von Elementen in den beiden Listen. Dies ist derselbe Verknüpfungseffekt wie bei der Standard-SQL.

Die Invoice-Nachricht enthält einen Satz mit Kundendaten, Zahlungsinformationen und Details zu den vom Kunden getätigten Einkäufen. Zur Verarbeitung der eingehenden Invoice-Nachricht wird folgender ESQL-Code codiert:

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);

Als Ergebnis wird folgende Ausgabenachricht generiert:

<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>

Es gibt drei Ergebnisse, ausgehend von der Anzahl der Beschreibungen in der ersten Liste (eins) multipliziert mit der Anzahl der Preise in der zweiten (drei). In den Ergebnisse werden systematisch alle Kombinationen der beiden Listen verarbeitet. Dies wird bei einem Blick auf die Felder LastName und UnitPrice in den einzelnen Ergebnissen deutlich:

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

Sie können Daten aus einer Liste und einer Nicht-Liste oder aus zwei Nicht-Listen usw. verknüpfen. Beispiel:

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

Beachten Sie in allen Fällen die Position von []. In der FROM-Liste kann eine beliebige Anzahl von Elementen angegeben werden, nicht nur ein oder zwei. Wenn mit einem Element [] als Definition einer Liste von Elementen angegeben wird, generiert die SELECT-Anweisung eine Liste von Ergebnissen. (Auch wenn die Liste nur ein Element enthält, gibt die SELECT-Anweisung möglicherweise eine Liste von Elementen zurück.) Das Ziel der Zuordnung muss eine Liste angeben (d. h. am Ende muss [] stehen), oder Sie müssen das Schlüsselwort THE verwenden, wenn Sie wissen, dass durch die WHERE-Klausel gewährleistet ist, dass nur eine Kombination gefunden wird.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Nachrichtenfluss entwerfen
Nachrichtenflussinhalt definieren
ESQL-Dateien verwalten
Zugehörige Verweise
Rechenknoten
Datenbankknoten
Filterknoten
ESQL-Referenz
Funktion SELECT
SET-Anweisung
Musternachricht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2005 Letzte Aktualisierung: Nov 17, 2005
ak05820_