Die FROM-Klausel ist nicht auf ein Element beschränkt. Die Angabe mehrerer Elemente in der FROM-Klausel erzeugt den normalen Verknüpfungseffekt eines kartesischen Produktes, bei dem das Ergebnis für alle Kombinationen von Elementen der beiden Listen ein Element enthält. Dies ist derselbe Verknüpfungseffekt wie bei Standard-SQL.
Die Nachricht 'Invoice' (Rechnung) enthält Informationen zum Kunden, zur Zahlung und zu dem Kauf, den der Kunde tätigt. Wenn Sie folgende ESQL-Anweisungen zur Verarbeitung der Eingabenachricht 'Invoice' codieren:
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);
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>
Da die Anzahl der Beschreibungen in der ersten Liste (1) mit der Anzahl der Preise in der zweiten Liste (3) multipliziert wird, sind drei Ergebnisse vorhanden. 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.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 jedem Fall die Position von []. In der FROM-Liste kann eine beliebige Anzahl an Elementen angegeben werden, nicht nur ein oder zwei. Wenn bei einem der Elemente [] angegeben ist, was für eine Liste mit Elementen steht, generiert SELECT eine Liste mit Ergebnissen (die Liste enthält möglicherweise nur ein Element, SELECT kann jedoch potenziell eine Liste mit Elementen zurückgeben). Das Ziel der Zuordnung muss eine Liste angeben (muss mit [] enden), oder Sie müssen das Schlüsselwort THE verwenden, wenn Sie wissen, dass die WHERE-Klausel garantiert, dass nur eine Kombination abgeglichen wird.