Filtern und Sortieren von Datenbankdaten
Um Datenbankdaten zu filtern und zu sortieren, verwenden Sie eine SQL/NoSQL-WHERE/ORDER-Komponente. Auf diese Art können Sie manuell eine SQL WHERE-Klausel eingeben, die die Daten filtert. Optional dazu können Sie auch eine ORDER BY-Klausel definieren, wenn Sie die Datensätze nach einem bestimmten Datenbankfeld in auf- oder absteigender Ordnung sortieren möchten.
Die SQL/NoSQL-WHERE/ORDER-Komponente muss mit einer Tabelle oder einem Feld einer Datenbank-Mapping-Komponente verbunden werden. Sie können eine SQL/NoSQL-WHERE/ORDER-Komponente auch mit einer Join-Komponente verbinden, wenn die verknüpfte Gruppe bzw. die verknüpften Datensätze gefiltert werden sollen (siehe Verknüpfen von Datenbankdaten mittels Join).
Hinzufügen einer SQL/NoSQL-WHERE ORDER-Komponente
Um eine SQL/NoSQL-WHERE/ORDER-Komponente zum Mapping hinzuzufügen, gehen Sie folgendermaßen vor:
1.Gehen Sie zum Menü Einfügen und klicken Sie auf SQL/NoSQL-WHERE/ORDER. Standardmäßig hat diese Komponente die folgende Struktur:
![mf_sql-where](./images/mf_sql-where.png)
2.Verbinden Sie eine Tabelle oder ein Feld der Quelldatenbank mit dem Datenelement table/field der SQL/NoSQL-WHERE/ORDER-Komponente. Das Beispielmapping FilterDatabaseRecords.mfd (siehe Abbildung unten) dazu finden Sie im folgenden Ordner: <Dokumente>\Altova\MapForce2024\MapForceExamples\. In diesem Mapping nimmt die SQL/NoSQL-WHERE/ORDER-Komponente die Daten aus der Quelltabelle users, filtert alle Datensätze und wählt nur diejenigen aus, deren Nachname mit dem Buchstaben "M" beginnt (siehe Erläuterung im Unterabschnitt weiter unten).
![mf-sql-where-01](./images/mf-sql-where-01.png)
3.Doppelklicken Sie auf die Titelleiste der SQL/NoSQL-WHERE/ORDER-Komponente oder klicken Sie mit der rechten Maustaste auf die Komponente und wählen Sie im Kontextmenü den Befehl Eigenschaften. Daraufhin wird das Dialogfeld SQL/NoSQL-WHERE/ORDER-Eigenschaften geöffnet.
4.Geben Sie eine SQL WHERE-Klausel in das Textfeld oben ein. In unserem Beispiel lautet die SQL Where-Klausel folgendermaßen: last_name LIKE :sqlparam. Geben Sie optional eine ORDER BY-Klausel ein. In der Abbildung oben sehen Sie die im Mapping FilterDatabaseRecords.mfd definierte WHERE- und ORDER BY-Klausel (dieses Einstellungen werden weiter unten beschrieben). Weitere Beispiele finden Sie unter Erstellen von WHERE- und ORDER BY-Klauseln.
Parameter in SQL/NoSQL-WHERE/ORDER-Komponenten
In der SQL/NoSQL-WHERE/ORDER-Komponente aus dem Mapping FilterDatabaseRecords.mfd ist die folgende WHERE-Klausel definiert: last_name LIKE :sqlparam, wobei sich last_name auf den Namen des Datenbankfelds in der verbundenen Tabelle bezieht und LIKE ein SQL-Operator ist; :sqlparam erstellt im Mapping einen Parameter namens sqlparam.
Parameter in der SQL/NoSQL-WHERE/ORDER-Komponente sind optional. Sie sind nützlich, wenn Sie über das Mapping einen Wert an die WHERE-Klausel übergeben möchten. Ohne Parameter hätte die obige WHERE-Klausel folgendermaßen gelautet: Last LIKE "M%". Damit würden alle Personen, deren Nachname mit dem Buchstaben "M" beginnt, abgerufen. Um diese Abfrage noch flexibler zu gestalten, haben wir anstelle von "M%" einen Parameter hinzugefügt. Dadurch kann auch jeder andere Buchstabe aus dem Mapping bereitgestellt werden, z.B. "D", um durch Änderung einer Konstante oder eines Mapping-Input-Parameters Personen, deren Nachname mit "D" beginnt, abzurufen. Der Input-Buchstabe im obigen Mapping stammt aus einer Input-Komponente namens input. Wenn Sie auf die Titelleiste dieser Komponente doppelklicken und ihre Eigenschaften öffnen, sehen Sie, dass m zum Zeitpunkt des Designs als Ausführungswert angegeben wird (siehe Abbildung unten).
![mf-sql-where-06](./images/mf-sql-where-06.png)
Das SQL-Platzhalterzeichen % wird im Mapping von einer Konstante bereitgestellt und anschließend mit Hilfe der concat-Funktion mit dem Parameterwert verkettet. Dies hat den Vorteil, dass man keine SQL-Platzhalterzeichen in die Befehlszeile eingeben muss, wenn dieses Mapping in einer andere Umgebung (z.B. MapForce Server) ausgeführt wird.
Aussehen von SQL/NoSQL-WHERE/ORDER-Komponenten
Das Aussehen von SQL/NoSQL-WHERE/ORDER-Komponenten ändert sich, je nachdem welche Einstellungen darin definiert sind. Auf diese Art sehen Sie gleich direkt im Mapping, was die SQL/NoSQL-WHERE/ORDER-Komponente tut (siehe Tabelle unten).
![]() | Es wurde eine WHERE-Klausel definiert. |
![]() | Es wurde eine WHERE-Klausel mit einem Parameter definiert. Der Parametername ist unterhalb des Datenelements table/field zu sehen. |
![]() | Es wurde eine WHERE-Klausel mit einem Parameter definiert. Zusätzlich dazu wurde eine ORDER BY-Klausel definiert. Die Sortierreihenfolge wird durch das Sortiersymbol A-Z angezeigt. |
Wenn Sie den Mauszeiger über die Titelleiste von SQL/NoSQL-WHERE/ORDER platzieren, wird ein Tooltip mit den verschiedenen definierten Klauseln angezeigt.