Wird ein Outer Join nur für die Analyse vom Entwickler verwendet? Ich habe Probleme, einen Anwendungsfall dafür zu finden, warum Sie Daten in zwei oder mehr Tabellen einbeziehen möchten, die nicht zusammenhängen oder nicht mit Ihren Auswahlkriterien übereinstimmen.Was ist der Zweck (oder Anwendungsfall) für einen äußeren Join in SQL?
Antwort
Ein Beispiel für einen Anwendungsfall wäre die Erstellung eines Berichts, der ALLE Kunden und deren Käufe anzeigt. Das heißt, auch Kunden, die nichts gekauft haben. Wenn Sie eine normale Verknüpfung von Kunden und Käufen durchführen, werden im Bericht nur die Kunden mit mindestens einem Kauf angezeigt.
Wäre es richtig, dies neu zu formulieren, wenn Sie ALLE Zeilen in Spalten erhalten möchten, die in zwei Tabellen existieren, dann besteht die einzige Möglichkeit darin, eine äußere Verknüpfung zu verwenden? –
Der Anwendungsfall, den ich beschrieben habe, wird normalerweise als linker äußerer Join ausgeführt. Sie erhalten alle Zeilen von der linken Tabelle (Kunden) und übereinstimmende Zeilen von rechts (Käufe). Um sicherzustellen, dass alle Zeilen aus BEIDEN Tabellen im Ergebnis dargestellt werden, würden Sie einen vollständigen äußeren Join verwenden. –
Der Fall "stimmt nicht überein" ist für optionale Daten nützlich. Etwas, das für einige Zeilen vorhanden ist, aber nicht für andere.
Warum der Downvote? Ist das nicht korrekt? –
Vielleicht haben Sie eine Benutzertabelle und eine Adresstabelle, da Ihre Benutzer möglicherweise keine Adresse angeben oder mehrere (Versand, Straße, Post usw.) haben können. Wenn Sie alle Ihre Benutzer auflisten möchten, aber auch Adressen für diejenigen anzeigen möchten, für die sie vorhanden sind, müssen Sie einen äußeren Join für die Adresstabelle verwenden.
Angenommen, Sie hatten zwei Tabellen, eine für Benutzer und eine für etwas wie Qualifikationen, Sie möchten eine Abfrage durchführen, die alle Benutzer mit ihren Qualifikationen erhält, wenn sie welche haben. In diesem Fall würden Sie einen Outer-Join verwenden, um alle Benutzer zurück zu erhalten und diejenigen mit Qualifikationen. Ein innerer Join würde Ihnen nur die Benutzer geben, die eine Qualifikation hatten.
Der Unterschied zwischen äußeren und inneren Joins besteht hauptsächlich darin, dass die äußeren Joins jeden Datensatz aus beiden verknüpften Tabellen beibehalten, unabhängig davon, ob das Join-Prädikat übereinstimmt oder nicht. Ein Anwendungsfall müsste sich also darum drehen, über "fehlende Dinge" zu wissen, z. Kunden, die keine Einkäufe getätigt haben, oder Mitglieder, denen persönliche Daten fehlen.
Ein großer Artikel über Outer-Joins: Meet the experts: Terry Purcell on coding predicates in outer joins: A comparison of simple outer join constructs
ist hier eine sehr gute Liste von Beispielen von keinem geringeren als Jeff Atwood - A Visual Explanation of SQL Joins er eine neue Darstellung zeigt visuell von der SQL verbindet.
+1 @Shadi Almosri ein Bild sagt mehr als tausend Worte. Besonders, wenn Sie nicht auf Sätze und Venn-Diagramme in der Schule geachtet haben :) – TheVillageIdiot
Der OUTER JOIN soll die Fälle behandeln, in denen Sie eine Reihe von Datensätzen aus einer Primärtabelle auswählen möchten, die verwandte Datensätze in einer Sekundärtabelle enthalten können oder nicht.
Ein INNER-Join würde alle primären Datensätze aus der Liste weglassen, die nicht auch in der sekundären Tabelle enthalten sind. Jeder OUTER JOIN garantiert die Sichtbarkeit aller qualifizierten Primärdatensätze.
- 1. Was ist der Zweck eines IMPLICIT JOIN in SQL?
- 2. Was ist der Anwendungsfall für ContextCompat.checkSelfPermission?
- 3. Was ist der Zweck der SQL-Sprache?
- 4. Was ist der Anwendungsfall der Benachrichtigung in RxJS?
- 5. Was ist der Anwendungsfall für "break Identifier" in JavaScript?
- 6. SQL-Abfrage für das Erhalten der Anzahl in der gleichen Tabelle mit linken äußeren Join
- 7. Was ist der Zweck für HTML's tbody?
- 8. Was ist der Anwendungsfall von "read_to" in Schienen?
- 9. Was ist ein guter Anwendungsfall für .NET 4.0 Expression Trees?
- 10. Was ist der Anwendungsfall für D's Kompilierzeit Auswertung
- 11. Was ist der Zweck von ~ 'oder' ~ in Clojure?
- 12. Was ist der Anwendungsfall für diesen Modifizierer zsh precommand '-'
- 13. Datenbankschwenkung - was ist der Zweck?
- 14. Was ist der Zweck der geschützten Modifikator für statische Methoden
- 15. SQL linken äußeren Join zu finden, nicht in 3 Tabellen
- 16. Was ist der Zweck von. * \\?
- 17. Was ist der Zweck der WCF-Sitzung?
- 18. Was ist der Zweck der `Pass` Aussage?
- 19. Grunt: Was ist der Zweck von cwd?
- 20. was sind die Verwendungen der verschiedenen Join-Operationen in SQL
- 21. Zweck der Array "Join" -Funktion in Swift
- 22. Was ist der Zweck des SQL-Schlüsselwortes "AS"?
- 23. Was ist der Zweck der Kreuztabelle in dieser Postgres-SQL-Abfrage?
- 24. Was ist der Zweck der Hex-Codierung für Binärdaten?
- 25. Was ist der spezifische Anwendungsfall des "Richtungs" -Stils?
- 26. Was ist der Zweck von :: in C#?
- 27. Was ist der Zweck von $ in XSLT
- 28. Was ist der Zweck der Winkel-Sanitize?
- 29. Was ist der Zweck der Option -lrt?
- 30. Was ist der Zweck von Rake?
die meisten der Antwort sagen Ihnen über LINKE OUTER JOIN, die am häufigsten ist. Lies stattdessen Wiki statt http://en.wikipedia.org/wiki/Join_(SQL)#Outer_joins, da es viel gründlicher ist. –