2009-07-09 2 views
3

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?

+3

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. –

Antwort

15

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.

+0

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? –

+1

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. –

3

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.

+1

Warum der Downvote? Ist das nicht korrekt? –

1

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.

1

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.

1

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.

4

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.

+0

+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

2

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.

Verwandte Themen