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 eine SQL-Modus ( ) 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.
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 Join-Ergebnis in einer Zielkomponente verwendet wird, darf keiner der verbundenen Tabellen direkt oder indirekt mit Parent-Ziel-Nodes verbunden sein. 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 ( ) in der rechten oberen Ecke der Join-Komponente anzeigen und steuern:
SQL-Modus ist deaktiviert (Die Join-Verknüpfung wird von MapForce (oder ggf. von MapForce Server) durchgeführt. | |
SQL-Modus ist aktiviert (Die Join-Verknüpfung wird von der Datenbank durchgeführt). |
Wenn die 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 ( ), 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.
Ändern des Join-Modus
Wenn sich die Join-Komponente im SQL-Modus befindet, können Sie Datenbanktabellen oder -ansichten auf eine der folgenden Arten verknüpfen:
•INNERER JOIN - von der Join-Komponente werden nur Datensätze, die die Bedingung in beiden Input-Gruppen erfüllen, zurückgegeben.
•LINKER ÄUSSERER JOIN - die Join-Komponente inkludiert alle Datensätze aus der Tabelle ganz links (in MapForce ist dies die oberste Tabelle einer Join-Komponente), plus diejenigen Datensätze aus der in der Folge verknüpften Tabelle, die die Join-Bedingung erfüllen.
Der Join-Modus einer Tabelle oder Ansicht in der Join-Komponente wird aus dem Symbol, das vor der verknüpften Tabelle oder Ansicht steht, ersichtlich. Für jede verknüpfte Tabelle oder Ansicht mit Ausnahme der ersten kann eines der folgenden Symbole angezeigt werden:
•Innerer Join
•Linker Join
Um einen Tooltipp mit näheren Informationen zum Join anzuzeigen, platzieren Sie den Mauszeiger über das Symbol:
Um den Join-Modus zu ändern, wählen Sie eine der folgenden Methoden:
•Klicken Sie auf das Innerer Join oder Linker Join Symbol vor der jeweiligen verknüpften Tabelle oder Ansicht und wählen Sie im Kontextmenü den Befehl Innerer Join oder Linker äußerer Join.
•Klicken Sie mit der rechten Maustaste in der Join-Komponente auf die zweite (oder dritte, vierte, usw.) verknüpfte Tabelle oder Ansicht und wählen Sie im Kontextmenü den Befehl Join-Typ | Innerer Join oder Join-Typ | Linker äußerer Join.
Beachten Sie dazu Folgendes:
•Wenn Sie den Join-Modus in LINKER ÄUSSERER JOIN ändern, bildet die obere Tabelle oder Ansicht die "linke" Seite des Join.
•Eine Änderung des Join-Modus wirkt sich auf die von der Join-Komponente zurückgegebenen Daten auf dieselbe Weise aus, wie sich ein INNERER JOIN oder LINKER JOIN auf das Ergebnis einer SQL-Abfrage in einer Datenbank auswirkt.
Aliasnamen
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). |