Daten in einer Nachricht verknüpfen

Die FROM-Klausel einer SELECT-Funktion ist nicht auf ein Element beschränkt. Wenn Sie in der FROM-Klausel mehrere Elemente angeben, bewirkt dies den typischen kartesischen Produktverknüpfungseffekt, d. h. das Ergebnis enthält ein Element für alle Kombinationen von Elementen in den beiden Listen.

Diese Verwendung der FROM-Klausel hat denselben Verknüpfungseffekt wie bei der Standard-SQL.

Die Nachricht 'Invoice' (Rechnung) enthält Informationen zum Kunden, zur Zahlung und zu dem Kauf, den der Kunde tätigt. Erstellen Sie folgenden ESQL-Code zur Verarbeitung der Eingabenachricht 'Invoice':

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

Es 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). Die Ergebnisse verarbeiten nacheinander systematisch alle Kombinationen der beiden Listen. Dies können Sie an den aus jedem Ergebnis ausgewählten Feldern LastName und UnitPrice sehen:

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.XMLNS.Test.Result1[] =
  (SELECT ... FROM InputBody.Test.A[], InputBody.Test.b);
OutputRoot.XMLNS.Test.Result1 =
  (SELECT ... FROM InputBody.Test.A, InputBody.Test.b);

Die Position von [] ist in allen Fällen wichtig. In der FROM-Klausel kann eine beliebige Anzahl an Elementen angegeben werden, nicht nur ein oder zwei. Wenn bei einem Element [] für eine Liste von Elementen angegeben ist, gibt die SELECT-Funktion eine Ergebnisliste zurück. (Auch wenn die Liste nur ein Element enthält, kann es sein, dass die SELECT-Funktion eine Liste von Elementen zurückgibt.)

Das Ziel der Zuordnung muss eine Liste angeben (muss also mit [] enden), oder Sie müssen die The-Funktion verwenden, wenn Sie wissen, dass durch die Where-Klausel gewährleistet ist, dass nur eine passende Kombination gefunden wird.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Nachrichtenfluss entwerfen
Nachrichtenflussinhalte definieren
ESQL-Dateien verwalten
Zugehörige Verweise
Compute-Knoten
Database-Knoten
Filter-Knoten
ESQL-Referenz
SELECT-Funktion
SET-Anweisung
The-Funktion
Beispielnachricht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:29:32

ak05820_