Join-Verknüpfungen im SQL-Modus

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

Startseite >  Datenquellen und -ziele > Datenbanken und MapForce > Verknüpfen von Datenbankdaten mittels Join >

Join-Verknüpfungen im SQL-Modus

Wenn Sie geeignete Datenbankkomponenten (wie z.B. Tabellen oder Ansichten) direkt mit einer Join-Komponente verbinden, wird in der rechten oberen Ecke der Join-Komponente automatisch eine SQL-Modus ( mf_ic_join_sql_enabled ) Schaltfläche angezeigt. Wenn der SQL-Modus aktiviert ist, wird die Join-Operation von der Datenbank, aus der die Daten gelesen werden, ausgeführt. Anders ausgedrückt sendet MapForce intern eine Abfrage in der entsprechenden SQL-Syntax an die Datenbank, um Daten aus allen an der Join-Verknüpfung beteiligten Tabellen auszuwählen und zu kombinieren. Vor allem müssen Sie dazu keine SQL-Anweisung schreiben; die erforderliche Abfrage wird auf Basis Ihres visuellen Designs der Join-Komponente im Mapping erstellt, wie in den nachfolgenden Beispielen gezeigt.

 

Anmerkung: Aus Datenbank- und SQL-Sicht handelt es sich bei MapForce-generierten Joins immer um INNER Joins, d.h. nur Datensätze, die in beiden Input-Gruppen die Bedingung erfüllen, werden von der Join-Komponente zurückgegeben.

 

Damit der SQL-Modus verwendet werden kann, müssen die folgenden Voraussetzungen erfüllt werden:

 

1.Beide zu verknüpfende Objekte (Tabellen oder Ansichten) müssen aus derselben Datenbank stammen.
2.Beide zu verknüpfende Objekte müssen aus derselben MapForce-Komponente stammen. (Beachten Sie, dass Sie Objekte in einer Komponente schnell hinzufügen/entfernen können: Klicken Sie mit der rechten Maustaste auf die Datenbankkomponente und wählen Sie im Kontextmenü den Befehl Datenbankobjekte hinzufügen/entfernen/bearbeiten.)
3.Die Join-Bedingung (oder Bedingungen) darf/dürfen ausschließlich über die Komponenteneigenschaften (durch Rechtsklick auf die Überschrift der Join-Komponente und Auswahl von Eigenschaften) und nicht im Mapping definiert sein (siehe auch Hinzufügen von Join-Bedingungen).

 

Anmerkung:Wenn Datenbanktabellen im SQL-Modus mittels Join verknüpft werden, erstellt MapForce die Join-Bedingung (oder Bedingungen) automatisch auf Basis von zwischen Tabellen gefundenen Sekundärschlüsselbeziehungen. Damit dies möglich ist, müssen sich die Datenbanktabellen in der MapForce-Komponente in einer Child-Parent-Beziehung befinden (d.h. eine Tabelle muss "Parent" oder "Child" einer anderen in der Komponente sein), siehe Beispiel: Verknüpfen von Tabellen mittels Join im SQL-Modus.

 

4.Alle Datenbanktabellen dürfen sich noch nicht im aktuellen Ziel-Kontext befinden. Wenn das Mapping z.B. so erstellt wurde, dass Tabellen vor der Join-Operation im Mapping abgefragt werden, könnte die Join-Verknüpfung dadurch unmöglich gemacht werden. Nähere Informationen zur Ausführung eines Mappings finden Sie unter Mapping-Regeln und -Strategien.

 

Sie können den SQL-Modus über die Schaltfläche SQL ( mf_ic_join_sql ) in der rechten oberen Ecke der Join-Komponente anzeigen und steuern:

 

mf_ic_join_sql

SQL-Modus ist deaktiviert (Die Join-Verknüpfung wird von MapForce (oder ggf. von MapForce Server) durchgeführt.

mf_ic_join_sql_enabled

SQL-Modus ist aktiviert (Die Join-Verknüpfung wird von der Datenbank durchgeführt).

 

Wenn die mf_ic_join_sql Schaltfläche fehlt, bedeutet dies, dass der SQL-Modus hier nicht sinnvoll ist oder für die verknüpften Daten nicht unterstützt wird.

 

In bestimmten Fällen muss der SQL-Modus explizit deaktiviert werden ( mf_ic_join_sql ), z.B.:

 

Wenn für Ihr Mapping Join-Bedingungen außerhalb der Join-Komponenteneigenschaften benötigt werden (d.h. im Mapping definierte Bedingungen, die mit dem condition Input der Join-Komponente verbunden sind).
Wenn Sie Tabellen aus unterschiedlichen Datenbanken miteinander verbinden möchten. Verwenden Sie eine Standard-Join-Verknüpfung (nicht SQL), wenn Sie Tabellen aus unterschiedlichen Datenbanken verknüpfen müssen.

 

Oft kommt es vor, dass mit Join verknüpfte Datenbanktabellen oder -ansichten in beiden verknüpften Strukturen identische Feldnamen enthalten. Wenn der SQL-Modus aktiviert ist, wird solchen Datenelementen in der Komponente das Präfix "AS" vorangestellt. Wenn z.B. zwei verknüpfte Tabellen ein Feld "id" enthalten, wird das Feld in der ersten verknüpften Tabelle als "id" und in der zweiten verknüpften Tabelle als "id AS id2" angezeigt. Auch für verknüpfte Tabellen können Aliasnamen erzeugt werden, z.B. wenn eine Tabelle mit sich selbst verknüpft wird.

 

Die Alias-Feld- oder Tabellennamen sind wichtig, wenn Sie diese später in einem Mapping referenzieren möchten. Stellen Sie sich z.B. einen Fall vor, in dem Sie das Ergebnis der Join-Verknüpfung filtern oder sortieren möchten. Zu diesem Zweck kann der Output der Join-Komponente mit einer SQL WHERE/ORDER-Komponente, in die Sie die SQL WHERE-Klausel eingeben würden, verbunden werden.

 

Um ein Feld über eine WHERE-Klausel zu referenzieren, schreiben Sie den Tabellennamen, gefolgt von einem Punkt (.), gefolgt vom Feldnamen. Um einen Tabellenaliasnamen zu referenzieren, referenzieren Sie den Namen, so wie er in der Join-Komponente angezeigt wird. In der ORDER BY-Klausel können Sie entweder dieselbe Methode verwenden (table.field) oder nur den Aliasfeldnamen (den Namen, der nach "AS" steht) verwenden.

 

Ein Beispielmapping, in dem SQL WHERE/ORDER-Klauseln verwendet werden, finden Sie unter Beispiel: Join-Tabellen im SQL-Modus.

 

Anmerkung:SQL WHERE/ORDER-Komponenten sind zwischen einer Datenbanktabelle und der Join-Komponente nicht zulässig; Sie können nur hinter (nicht aber vor) einer Join-Komponente hinzugefügt werden. Nähere Informationen zu SQL WHERE/ORDER-Komponenten finden Sie unter Filtern und Sortieren von Datenbankdaten (SQL WHERE/ORDER).

© 2019 Altova GmbH