Auf mehrere Datenbanktabellen zugreifen

Sie können auf mehrere Tabellen verweisen, die in derselben Datenbank erstellt haben. Verwenden Sie die FROM-Klausel in der SELECT-Anweisung, um die Daten aus zwei Tabellen zu verknüpfen.

Im folgenden Beispiel wird vorausgesetzt, dass sie über zwei Datenbanktabellen mit den Namen USERTABLE1 und USERTABLE2 verfügen. Beide Tabellen enthalten zwei Spalten vom Datentyp CHAR(6) (oder einem äquivalenten Datentyp).

USERTABLE1 enthält zwei Zeilen:

  Column1 Column2
Zeile 1 value1 value2
Zeile 2 value3 value4

USERTABLE2 enthält zwei Zeilen:

  Column3 Column4
Zeile 1 value5 value6
Zeile 2 value7 value8

Alle Tabellen, auf die in einer SELECT-Klausel verwiesen wird, müssen sich in derselben Datenbank befinden. Bei der Datenbank kann es sich entweder um die Standarddatenbank, die über die Knoteneigenschaft "Datenquelle" festgelegt wurde, oder eine andere Datenbank handeln, die in der FROM-Klausel der SELECT-Funktion angegeben wurde.

Konfigurieren Sie den von Ihnen verwendeten Rechen-, Filter- oder Datenbankknoten so, dass er die Datenbank, in der Sie die Tabellen definiert haben, identifiziert.Klicken Sie z. B. bei Verwendung der Standarddatenbank mit der rechten Maustaste auf den Knoten, wählen Sie ESQL öffnen aus, und codieren Sie die folgenden ESQL-Anweisungen im Modul für diesen Knoten:

SET OutputRoot.XML.Test.Result[] =
         (SELECT A.Column1 AS FirstColumn,
                 A.Column2 AS SecondColumn,
                 B.Column3 AS ThirdColumn,
                 B.Column4 AS FourthColumn
            FROM Database.USERTABLE1 AS A,
                 Database.USERTABLE2 AS B
           WHERE A.Column1 = 'value1' AND
                 B.Column4 = 'value8'
         ); 

Dies ergibt folgenden Inhalt der Ausgabenachricht:

<Test>
  <Result>
    <FirstColumn>Wert1</FirstColumn>
    <SecondColumn>Wert2</SecondColumn>
    <ThirdColumn>Wert7</ThirdColumn>
    <FourthColumn>Wert8</FourthColumn>
  </Result>
</Test>

Dieses Beispiel zeigt, wie auf Daten aus zwei Datenbanktabellen zugegriffen wird. Sie können komplexere FROM-Klauseln für den Zugriff auf mehrere Datenbanktabellen codieren, wobei sich jedoch alle Tabellen in derselben Datenbank befinden müssen. Sie können auch auf eine oder mehrere Nachrichtenbaumstrukturen verweisen, und Sie können mit Hilfe von SELECT Tabellen mit Tabellen, Nachrichten mit Nachrichten oder Tabellen mit Nachrichten verknüpfen. Daten aus XML-Nachrichten und Datenbanktabellen verknüpfen stellt ein Beispiel für die Zusammenführung von Nachrichtendaten mit Daten in einer Datenbanktabelle zur Verfügung.

(über die Knoten-Eigenschaft data source (Datenquelle) definiert).

Wenn in der WHERE-Klausel eine ESQL-Funktion oder -Prozedur für den Spaltenbezeichner angegeben wird, wird diese als Teil der Datenbankabfrage und nicht als ESQL verarbeitet.

Betrachten Sie das folgende Beispiel:

  SET OutputRoot.XML.Test.Result = 
     THE(SELECT ITEM T.Column1 FROM Database.USERTABLE1 AS T 
     WHERE UPPER(T.Column2) = 'WERT2');

Ziel dieses Beispiels ist es, die Zeilen zurückzugeben, in denen der Wert von Column2 nach der Umwandlung in Großbuchstaben WERT2 lautet. Allerdings kann nur der Datenbankmanager den Wert von T.Column2 für eine angegebene Zeile festlegen. Deshalb kann der Wert erst nach Ausgabe der Datenbankabfrage mit ESQL bearbeitet werden, weil die Zeilen, die an den Nachrichtenfluss zurückgegeben werden, in der WHERE-Klausel festgelegt werden.

Die UPPER-Funktion wird daher an den Datenbankmanager übergeben, damit dieser sie in seine Verarbeitung aufnimmt. Sollte der Datenbankmanager das Token jedoch nicht innerhalb der SELECT-Anweisung verarbeiten können, wird ein Fehler zurückgegeben.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Einen Nachrichtenfluss entwerfen
Nachrichtenflussinhalte definieren
ESQL-Dateien verwalten
Daten aus XML-Nachrichten und Datenbanktabellen verknüpfen
Zugehörige Verweise
Rechenknoten (Compute)
Datenbankknoten (Database)
Filterknoten
ESQL-Referenz
SELECT-Funktion
SET-Anweisung
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ak05830_