Die FROM-Klausel einer SELECT-Funktion ist nicht auf ein Element beschränkt. Durch die Angabe mehrerer Elemente in der FROM-Klausel wird der typische kartesische Produktverknüpfungseffekt erzeugt, 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 Beispielnachricht (für die Eingabe):
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 eines oder zwei. Wenn mit einem Element [] als Definition einer Liste von Elementen angegeben wird, gibt die SELECT-Funktion eine Liste von Ergebnissen zurück. (Auch wenn die Liste nur ein Element enthält, gibt die SELECT-Funktion eine Liste von Elementen zurück.)
Das Ziel der Zuordnung muss eine Liste angeben (d. h., am Ende muss [] stehen), oder Sie müssen die Funktion THE verwenden, wenn Sie wissen, dass durch die WHERE-Klausel gewährleistet ist, dass nur eine Kombination gefunden wird.