Erstellen von WHERE- und ORDER BY-Klauseln

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele > Datenbanken und MapForce > Filtern und Sortieren von Datenbankdaten (SQL WHERE/ORDER) >

Erstellen von WHERE- und ORDER BY-Klauseln

Nachdem Sie eine SQL WHERE/ORDER-Komponente zum Mapping hinzugefügt haben, benötigen Sie dafür eine WHERE-Bedingung (Klausel), mit der Sie festlegen können, wie genau die mit der Komponente verbundenen Daten gefiltert werden sollen. Die WHERE-Bedingung muss, wie im vorherigen Abschnitt gezeigt, in das MapForce-Dialogfeld "SQL WHERE/ORDER-Eigenschaften" eingegeben werden.

 

WHERE-Bedingungen in MapForce werden ähnlich wie dieselbe SQL-Klausel außerhalb von MapForce geschrieben. Verwenden Sie die Syntax für die SQL-Variante für die entsprechende Datenbank. Verwenden Sie z.B. Operatoren, Platzhalter, Sub-Select-Klauseln oder Aggregierungsfunktionen. Um Parameter zu erstellen, die über das Mapping übergeben werden können, geben Sie ein Semikolon-Zeichen ( : ), gefolgt von einem Parameternamen ein.

 

Anmerkung:Sobald Sie die WHERE-Klausel fertig erstellt und auf OK geklickt haben, validiert MapForce die endgültige SQL-Anweisung. Falls Syntaxfehler vorhanden sind, werden Sie darüber in einem Dialogfeld informiert.

 

Die nachstehende Tabelle enthält eine Liste einiger typischer Operatoren, die in der WHERE-Klausel verwendet werden können:

Operator

Beschreibung

=

Ist gleich

<>

Ist nicht gleich

<

Kleiner als

>

Größer als

>=

Größer oder gleich

<=

Kleiner oder gleich

IN

Ruft einen bekannten Wert einer Spalte ab

LIKE

Sucht nach einem bestimmten Muster

BETWEEN

Sucht innerhalb eines Bereichs

 

Verwenden Sie das Platzhalterzeichen % (Prozent), um eine beliebige Anzahl von Zeichen in einem Muster darzustellen. Verwenden Sie z.B. den folgenden Ausdruck, um alle Datensätze, die mit "r" enden, aus einem Feld namens lastname abzurufen:

lastname = "%r"

Bei Abfragen an Datenbanken, die das Speichern und Abfragen von XML-Datenbankdaten unterstützen (z.B. IBM DB2, Oracle, SQL Server) können Sie XML-Funktionen und Schlüsselwörter für die jeweilige Datenbank verwenden, z.B.:

xmlexists('$c/Client/Address[zip>"55116"]' passing USER.CLIENTS.CONTACTINFO AS "c")

Siehe auch Beispiel: Extrahieren von Daten aus IBM DB2-Spalten vom Typ XML.

 

Wenn Sie die abgerufenen Datensätze optional nach einem bestimmten Feld sortieren möchten, fügen Sie im entsprechenden Textfeld des Dialogfelds "SQL WHERE/ORDER-Eigenschaften" eine ORDER BY-Klausel hinzu. Um nach mehreren Feldern zu sortieren, trennen Sie die Felder durch Kommas. Sie können die Sortierreihenfolge mit Hilfe der Schlüsselwörter ASC und DESC ändern. So werden z.B. mit der folgenden ORDER BY-Klausel Datensätze in absteigender Reihenfolge zuerst nach lastname und anschließend nach firstname sortiert:

lastname, firstname DESC

 

Beispiel 1

Die folgende WHERE-Bedingung wird in der Datenbankkomponente altova.mdb an die Tabelle Person angehängt. Sie ruft diejenigen Datensätze ab, in denen First und Last größer als der Buchstabe "C" sind, d.h. alle Namen, die im Alphabet nach "Callaby" kommen, werden abgerufen.

First > "C" AND Last > "C"

 

Beachten Sie, wie die Verbindungen platziert wurden:

 

Die Verbindung zum Parameter table/field ist mit der Quelltabelle verbunden, an der Sie die Abfrage durchführen möchten, in diesem Fall mit "Person".
Der Parameter result ist mit einem übergeordneten Datenelement der Felder verbunden, die abgefragt/gefiltert werden, in diesem Fall mit dem Datenelement "Person".

 

whereeg-1

 

Beispiel 2

Mit der folgenden WHERE-Klausel wird ein Parameter Name erstellt, der anschließend im Mapping in der SQL WHERE/ORDER-Komponente aufscheint.

 

Last LIKE :Name

 

sql-where4a

 

Die Konstantenkomponente %S liefert den Werte des Parameters Name. Der Platzhalter % steht für beliebig viele Zeichen. Dadurch wird im Mapping nach einem Muster in der Spalte "Last" gesucht (alle Nachnamen, die mit "S" enden).

 

Beispiel 3

Mit der folgenden WHERE-Anweisung werden zwei Parameter erstellt, PhoneUpper und PhoneLower, mit denen die aktuellen Werte von PhoneExt verglichen werden. Der obere und der untere Wert stammen aus den zwei Konstantenkomponenten aus dem unten gezeigten Diagramm.

PhoneExt < :PhoneUpper and PhoneExt > :PhoneLower

 

whereeg-3

Die WHERE-Bedingung in diesem Beispiel könnte auch mit Hilfe des Operators BETWEEN erstellt werden.

 

PhoneExt BETWEEN :PhoneUpper and :PhoneLower


© 2019 Altova GmbH