Zum Inhalt springen

So erstellen und verwenden Sie SQL-Joins und -Vereinigungen im Jitterbit App Builder

Beim Erstellen von Geschäftsobjekten in der Business Logic Layer ist es oft notwendig, auf zwei separate Tabellen zuzugreifen, um Daten aus beiden anzuzeigen. Mit dem App Builder können Sie einen Join-Typ konfigurieren, um Spalten aus einer oder mehreren Tabellen oder Geschäftsobjekten zu kombinieren und ein neues Geschäftsobjekt zu erstellen. Dieser Artikel führt Sie durch die vier Arten von SQL-Joins, die im App Builder unterstützt werden - Inner, Left Outer, Cross und Right Outer - und gibt Beispiele dafür, wie Sie sie im App Builder erstellen und verwenden können. Darüber hinaus werden wir auch einen weiteren Beziehungstyp namens Union betrachten, der unter Joins im App Builder konfiguriert werden kann.

  • Inner - Der Inner Join-Typ gibt Zeilen zurück, die in jeder Tabelle vorhanden sind
  • Cross - Der Cross Join erzeugt ein kartesisches Produkt
  • Left Outer - Ein Left Outer Join gibt alle Zeilen aus der angegebenen linken Tabelle zurück, unabhängig von einem Treffer in der rechten Tabelle
  • Right Outer - Ein Right Outer gibt alle Zeilen aus der angegebenen rechten Tabelle zurück, unabhängig von einem Treffer in der linken Tabelle
  • Union - Kombiniert das Ergebnis von zwei oder mehr SELECT-Anweisungen

Inner Join

Was ist ein Inner Join?

Inner Joins sind die am häufigsten verwendeten Joins. Bei zwei Tabellen enthält das Ergebnis eines Inner Joins nur die Zeilen zwischen den beiden Tabellen, die basierend auf den Join-Spalten identisch sind.

Innerdiagram

Beispiel

Angenommen, wir möchten ein Geschäftsobjekt von Kunden, die eine Bestellung aufgegeben haben, und die Einzelheiten der aufgegebenen Bestellung. Dies wäre ein großartiger Anwendungsfall für einen Inner Join, da ein Inner Join Datensätze an der Schnittstelle von zwei Tabellen zurückgeben kann. Unser Ergebnis sollte jede CustomerID enthalten, die eine OrderID hat. Unten sind die beiden Tabellen Customer und Order, die wir verbinden werden.

Customertable

A ordertable

Bevor Sie Ihr Inner Join erstellen, müssen Sie ein Business Object erstellen. Unseres heißt Customer (with Order). Fügen Sie die beiden Tabellen in das Tabellenfeld ein. Implementieren Sie das Inner Join zwischen Customer und Order. Die Join-Spalte hier ist CustomerID, die die einzige Spalte zwischen den beiden ist, die gleich ist.

join1.png

Innercolumnstab

Innerjoinstab

Das Ergebnis sollte die Kunden sein, die Bestellungen aufgegeben haben. In diesem Fall ergab unsere Daten eine Zeile:

Innerresults

Cross Join

Was ist ein Cross Join?

Ein Cross Join erzeugt ein Ergebnis, das die Anzahl der Zeilen x in der ersten Tabelle multipliziert mit der Anzahl der Zeilen y in der zweiten Tabelle ist. Das Ergebnis wird x * y Zeilen haben.

Wenn man versucht zu entscheiden, was bei einem Cross Join sinnvoll ist, hilft es zu sagen, dass das resultierende Set Spalten aus Tabelle 1 für jede Spalte in Tabelle 2 haben wird.

Crossdiagram

Beispiel

Wir haben zwei Tabellen, Category und Supplier. Wir wissen, dass jeder Supplier jede Category haben möchte, also müssen wir ein Business Object erstellen, das diese beiden Tabellen kombiniert. Wir möchten ein Ergebnis, das eine Category für jeden Supplier hat. Dies ist ein perfektes Beispiel dafür, wann man einen Cross Join verwenden sollte.

Unten sind Beispielaufzeichnungen für die Tabellen Category und Supplier:

Categoryrecords

A supplierrecords

Um diese beiden Tabellen zu Cross Joinen, müssen wir ein neues Business Object erstellen. Wir haben unseres Supplier (and Categories) genannt. Fügen Sie die beiden Tabellen, die Sie Cross Joinen möchten, im Tabellenfeld hinzu. Geben Sie im Joins-Bereich an, dass Sie ein Cross Join zwischen den beiden Tabellen wünschen.

join2.png

A crosscolumns

A crossjoins

Hinweis

Wir müssen keine Join-Spalten angeben, da bei dem Cross Join die beiden Tabellen keine gemeinsamen Spalten haben müssen, um zu joinen. Wir können trotzdem eine Kategorie für jeden Lieferanten erhalten.

Nach der Implementierung dieses Joins werden wir Ergebnisse wie diese sehen. Beachten Sie, dass es eine Kategorie für jeden Lieferanten gibt:

Crossresults

Left outer join

Was ist ein Left Outer Join?

Ein Left Outer Join ruft alle übereinstimmenden Zeilen von zwei Tabellen ab (die inneren zwischen den beiden) sowie Zeilen, die nicht mit einer Zeile in der zweiten Tabelle übereinstimmen. Dies ist nützlich, wenn Sie alle Ergebnisse, die zwischen zwei Tabellen gemeinsam sind, möchten, aber auch die Nullwerte in der linken Tabelle.

A leftouterdiagram

Beispiel

Sie möchten möglicherweise eine Liste aller Kunden, unabhängig davon, ob sie eine Bestellung aufgegeben haben oder nicht. In diesem Fall wäre ein Left Outer Join perfekt. Dieses Beispiel ähnelt dem vorherigen Inner Join-Beispiel, mit dem Unterschied, dass wir in diesem Fall auch Ergebnisse sehen möchten, bei denen eine CustomerID ohne eine OrderID aufgeführt ist.

Unten sind die Tabellen, die wir verwenden: Kunde und Bestellung. Es sind die gleichen Tabellen, die wir für das Beispiel eines Inner Joins verwendet haben.

Customertable

A ordertable

Diese Deklaration des Geschäftsobjekts ist sehr ähnlich zu der des Geschäftsobjekts im Inner Join-Beispiel. Der einzige Unterschied ist der Name und die Deklaration dieses Joins als Left Outer anstelle eines Inner Joins.

join3.png

Innercolumnstab

A lo joins

Die Ergebnisse liefern uns die gleichen Ergebnisse, die das Inner Join uns gegeben hat, plus die Zeilen in der Customer-Tabelle, die mit keiner Zeile in der Order-Tabelle übereinstimmen.

Diesmal gibt es 92 Ergebnisse.

A lo results

Right outer

Was ist ein Right Outer Join?

Der dritte Join ist ein Right Outer Join, der das genaue Gegenteil eines Left Outer Joins ist. Es spielt normalerweise keine Rolle, welches von beiden verwendet wird, da man eine Tabelle immer von der linken auf die rechte Seite des Joins verschieben kann, und es erzielt den gleichen Effekt. Die Ergebnisse variieren je nachdem, welchen Join Sie wählen und in welcher Reihenfolge die Tabellen im Joins-Panel hinzugefügt werden.

A ro diagram

Beispiel

Als Beispiel dafür, dass man von einem Left Outer Join zu einem Right Outer Join wechseln möchte, könnte man alle Kunden mit oder ohne Bestellungen sowie alle Bestelldetails mit oder ohne Bestellungen oder Produkte anzeigen wollen. Die folgende Deklaration ist eine Möglichkeit, wie Sie diese Logik konfigurieren könnten.

join4.png

A ro columns

A ro joins

Wenn wir die Ergebnisse ausführen oder die schnellen Gitterergebnisse anzeigen, sehen wir die folgenden zurückgegebenen Datensätze:

A ro results

Union

Was ist eine Union?

Im App Builder erzeugen Union Joins eine Kombination aus zwei Select-Anweisungen, die dieselbe Spalte anvisieren. Ein Union Join kombiniert die Ergebnisse von zwei verschiedenen Spalten (die denselben Namen haben) aus zwei verschiedenen Tabellen in eine einheitliche Spalte. Während die meisten Joins eine Join-Spalte nutzen, tut dies der Union Join nicht. Dies liegt daran, dass andere Joins einen gemeinsamen Kontext zwischen den beiden Tabellen benötigen, um zu funktionieren, während ein Union Join nur gemeinsame Spalten benötigt.

Beispiel 1

Zum Beispiel würde ein Inner Join zwischen den Tabellen Product und Supplier jedes Produkt zusammen mit seinem Lieferanten anzeigen, während ein Union Join zwischen den Tabellen Product und Supplier Ihnen eine Liste aller verschiedenen SupplierID-Felder zeigen würde. Dies liegt daran, dass der Union Join im Wesentlichen alle Ergebnisse aus derselben Spalte in zwei verschiedenen Tabellen anzeigt, und diese beiden Tabellen teilen sich nur die SupplierID. Denken Sie daran, dass beim Join das Teilen des Kontexts und das Vorhandensein derselben Spalte zwei verschiedene Kriterien sind.

Unten sind die beiden Tabellen Supplier und Product.

A supplier results

A product results

Jetzt können Sie Ihr Business Object erstellen, das den Union Join verwenden wird. Wir haben unseres Supplier (Union mit Product) genannt. Bringen Sie die Tabellen, die Sie verwenden werden, in das Tabellenpanel. Erklären Sie einen Union zwischen den beiden Tabellen im Joins-Panel. Dieser Join benötigt erneut keine Join-Spalte. Das Spaltenpanel erlaubt es uns nur, SupplierID als Spalte hinzuzufügen, da es die einzige Spalte ist, die die beiden Tabellen gemeinsam haben.

join5.png

A union columns

A union joins

Das Ergebnis-Set enthält alle SupplierIDs, einschließlich doppelter Datensätze, wenn die SupplierID in beiden Tabellen erscheint.

A union results

Beispiel 2

Ein weiterer Anwendungsfall für einen Union ist, wenn ein Kunde Sie bittet, alle Befragten zu finden, aber die Benutzer auf mehrere Arten antworten können. Angenommen, ein Benutzer kann per E-Mail antworten, die in eine Tabelle namens EmailRespondants eingegeben wird, aber sie können auch telefonisch über die Tabelle PhoneRespondant antworten. Sie könnten die Tabellen zusammen unionieren, um die Spalten zu finden, die sie gemeinsam haben, was RespondantID und RespondType sein könnte, um eine Liste aller Personen zu erhalten, die geantwortet haben, und wie sie geantwortet haben. Auf diese Weise können Sie auch dieselbe RespondantID mehrfach sehen, aber sehen, wie sie jedes Mal geantwortet haben.