So erstellen und verwenden Sie SQL-Joins und-Unions im Jitterbit App Builder
Beim Erstellen von Geschäftsobjekten in der Geschäftslogikschicht ist es oft erforderlich, auf zwei separate Tabellen zurückzugreifen, um Daten aus beiden anzuzeigen. Mit 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 in App Builder unterstützt werden - Inner, Left Outer, Cross und Right Outer - und gibt Beispiele für deren Erstellung und Verwendung in App Builder. Darüber hinaus werfen wir einen Blick auf einen anderen Beziehungstyp namens Union, der unter Joins in App Builder konfiguriert werden kann.
- Inner - Der Inner Join-Typ gibt Zeilen zurück, die in jeder Tabelle vorhanden sind
- Kreuz - Der Kreuzverknüpfungspunkt erzeugt ein kartesisches Produkt
- Left Outer - Ein Left Outer Join gibt alle Zeilen aus der angegebenen linken Tabelle zurück, unabhängig von einer Übereinstimmung in der rechten Tabelle
- Rechts außen - Ein Rechts außen gibt alle Zeilen aus der angegebenen rechten Tabelle zurück, unabhängig von einer Übereinstimmung in der linken Tabelle
- Union - Kombiniert die Ergebnismenge von zwei oder mehr SELECT-Anweisungen
Innerer Join
Was ist ein Inner Join?
Inner Joins sind die am häufigsten verwendeten Joins. Bei zwei Tabellen enthält die Ergebnismenge eines Inner Joins nur die Zeilen zwischen den beiden Tabellen, die basierend auf den Join-Spalten identisch sind.
Beispiel
Nehmen wir an, wir benötigen ein Geschäftsobjekt mit Kunden, die eine Bestellung aufgegeben haben, und den Details der Bestellung. Dies wäre ein hervorragender Anwendungsfall für einen Inner Join, da ein Inner Join Datensätze an der Schnittstelle zweier Tabellen zurückgeben kann. Unser Ergebnissatz sollte alle CustomerID
das hat eine OrderID
Unten sind die beiden Tabellen Customer
Und Order
Wir werden uns anschließen.
Bevor Sie Ihren Inner Join erstellen, müssen Sie ein Geschäftsobjekt erstellen. Unser Geschäftsobjekt heißt Customer (with Order)
. Bringen Sie die beiden Tabellen in das Tabellenfenster. Implementieren Sie den Inner Join zwischen Customer
Und Order
Die Spalte „Join“ lautet CustomerID
Dies ist die einzige identische Spalte zwischen beiden.
Das Ergebnis sollte die Kunden enthalten, die Bestellungen aufgegeben haben. In diesem Fall ergaben unsere Daten eine Zeile:
Kreuzverbindung
Was ist ein Cross Join?
Ein Cross Join erzeugt eine Ergebnismenge, die sich aus der Anzahl der Zeilen x der ersten Tabelle multipliziert mit der Anzahl der Zeilen y der zweiten Tabelle ergibt. Die Ergebnismenge umfasst dann x * y Zeilen.
Um zu entscheiden, was bei einem Cross Join sinnvoll ist, empfiehlt es sich, zu berücksichtigen, dass die Ergebnismenge Spalten aus Tabelle 1 für jede Spalte aus Tabelle 2 enthält.
Beispiel
Wir haben zwei Tische, Category
Und Supplier
Wir wissen, dass jeder Supplier
möchte jeden Category
, daher müssen wir ein Geschäftsobjekt erstellen, das diese beiden Tabellen kombiniert. Wir möchten ein Ergebnisset mit einem Category
für jeden Supplier
Dies ist ein perfektes Beispiel für die Verwendung eines Cross Join.
Nachfolgend finden Sie Beispieldatensätze für die Tabellen Category
Und Supplier
:
Um diese beiden Tabellen zu verknüpfen, müssen wir ein neues Geschäftsobjekt erstellen. Wir haben es genannt Supplier (and Categories)
. Fügen Sie die beiden Tabellen, die wir kreuzverknüpfen möchten, in das Tabellenfenster ein. Geben Sie im Fenster „Joins“ an, dass Sie einen Kreuzverknüpfungsvorgang zwischen den beiden Tabellen durchführen möchten.
Hinweis
Wir müssen keine Join-Spalten angeben, da die beiden Tabellen beim Cross Join keine gemeinsamen Spalten haben müssen. Wir erhalten dennoch eine Category
für jeden Supplier
Nach der Implementierung dieses Joins sehen wir folgende Ergebnisse. Beachten Sie, dass es eine Category
für jeden Supplier
:
Linker äußerer Join
Was ist ein Left Outer Join?
Ein Left Outer Join ruft alle übereinstimmenden Zeilen zweier Tabellen (die innere zwischen den beiden) sowie Zeilen ab, die mit keiner Zeile der zweiten Tabelle übereinstimmen. Dies ist nützlich, wenn Sie alle gemeinsamen Ergebnisse zweier Tabellen, aber auch die Nullwerte der linken Tabelle benötigen.
Beispiel
Sie benötigen 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 ideal. Dieses Beispiel ähnelt dem vorherigen Inner Join-Beispiel, nur dass wir hier auch Ergebnisse anzeigen möchten, bei denen ein CustomerID
aufgeführt ohne OrderID
.
Die folgenden Tabellen verwenden wir: Customer
Und Order
Es handelt sich um dieselben Tabellen, die wir im Beispiel eines Inner Joins verwendet haben.
Diese Business-Objekt-Deklaration ähnelt stark dem Business-Objekt aus dem Beispiel „Inner Join“. Der einzige Unterschied besteht im Namen und in der Deklaration dieses Joins als „Left Outer“ statt als „Inner Join“.
Die Ergebnisse liefern die gleichen Ergebnisse wie beim Inner Join, zusätzlich zu den Zeilen in der Customer
Tabelle, die keiner Zeile in der Order
Tabelle.
Diesmal gibt es 92 Ergebnisse.
Rechts außen
Was ist ein rechter äußerer Join?
Der dritte Join ist ein Right Outer Join, das genaue Gegenteil eines Left Outer Joins. Ob Sie den einen oder den anderen Join verwenden, spielt in der Regel keine Rolle, da Sie eine Tabelle jederzeit von der linken auf die rechte Seite des Joins verschieben können und so den gleichen Effekt erzielen. Die Ergebnisse variieren je nach gewähltem Join und der Reihenfolge der Tabellen, die im Join-Bereich hinzugefügt werden.
Beispiel
Beispiel: Wenn Sie von einem Left Outer Join zu einem Right Outer Join wechseln möchten, möchten Sie möglicherweise alle Ihre Kunden mit oder ohne Bestellungen sowie alle Bestelldetails mit oder ohne Bestellungen oder Produkte anzeigen. Die folgende Deklaration zeigt eine Möglichkeit, diese Logik zu konfigurieren.
Wenn wir Ergebnisse ausführen oder die Quick Grid-Ergebnisse anzeigen, werden folgende Datensätze zurückgegeben:
Union
Was ist eine Gewerkschaft?
Im App Builder erzeugen Union Joins eine Kombination aus zwei Select-Anweisungen, die auf dieselbe Spalte abzielen. Ein Union Join kombiniert die Ergebnisse zweier unterschiedlicher Spalten (mit gleichem Namen) aus zwei verschiedenen Tabellen zu einer einheitlichen Spalte. Während die meisten Joins eine Join-Spalte verwenden, ist dies beim Union Join nicht der Fall. 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
Beispielsweise ein Inner Join zwischen Product
Und Supplier
Tabellen würden jedes Produkt zusammen mit seinem Lieferanten anzeigen, während ein Union Join zwischen den Product
Und Supplier
Tabellen würden Ihnen eine Liste aller verschiedenen SupplierID
Felder. Dies liegt daran, dass der Union Join im Wesentlichen alle Ergebnisse aus derselben Spalte in zwei verschiedenen Tabellen anzeigt und diese beiden Tabellen nur die SupplierID
. Beachten Sie, dass bei Joins die gemeinsame Kontextnutzung und die gleiche Spalte zwei verschiedene Kriterien sind.
Im Folgenden sind die beiden Tabellen „Lieferant“ und „Produkt“ aufgeführt.
Jetzt können Sie Ihr Business-Objekt erstellen, das den Union Join verwendet. Wir haben unser Business-Objekt genannt: Supplier (Union with Product)
. Fügen Sie die Tabellen, die Sie verwenden möchten, in das Tabellenfenster ein. Deklarieren Sie im Fenster „Joins“ eine Union zwischen den beiden Tabellen. Auch für diesen Join ist keine Join-Spalte erforderlich. Das Fenster „Spalten“ erlaubt lediglich das Hinzufügen von SupplierID
als Spalte, da es die einzige gemeinsame Spalte der beiden Tabellen ist.
Das Ergebnis enthält alle SupplierID
's, einschließlich doppelter Datensätze, wenn die SupplierID
erscheint in beiden Tabellen.
Beispiel 2
Ein weiterer Anwendungsfall für eine Union ist, wenn ein Kunde Sie auffordert, alle Antwortenden zu finden, die Benutzer aber auf verschiedene Arten antworten können. Nehmen wir an, ein Benutzer kann per Email antworten, die in eine Tabelle namens EmailRespondants
, aber sie können auch per Telefonanruf antworten, indem sie die PhoneRespondant
Tabelle. Sie können die Tabellen zusammenfassen, um die gemeinsamen Spalten zu finden. Dies könnte sein: RespondantID
Und RespondType
um eine Liste aller Personen zu erhalten, die geantwortet haben und wie sie geantwortet haben. Auf diese Weise können Sie auch die gleichen RespondantID
mehrmals, aber Sie können jedes Mal sehen, wie sie reagiert haben.