2063 Stimmen

LEFT JOIN vs. LEFT OUTER JOIN in SQL Server

Was ist der Unterschied zwischen LEFT JOIN y LEFT OUTER JOIN ?

342 Stimmen

Keine! Die OUTER Schlüsselwort ist optional.

30 Stimmen

Venn-Diagramme sind für die Beantwortung dieser Frage nicht geeignet. Die Antwort auf diese Frage lautet Keine . Siehe den ersten Kommentar.

7 Stimmen

Venn-Diagramme veranschaulichen die Differenz der Ausgangszeilen para Sonderfälle de innere vs. äußere Verknüpfung . Wenn keine Nullen oder doppelten Zeilen eingegeben werden (so können wir eine Tabelle als eine Menge von zeilenbewerteten Werten betrachten und normale mathematische Gleichheit verwenden) dann enthalten die linken und rechten Kreise die Ausgabetabellen/-mengen der linken und rechten Verknüpfung . Wenn jedoch Nullen oder doppelte Zeilen eingegeben werden, ist es so schwierig zu erklären, woraus die Kreise bestehen und wie sich diese Kreise zu den Ein- und Ausgabetabellen/-taschen verhalten, dass Venn-Diagramme nicht hilfreich sind. Siehe meine Kommentare zu anderen Missbräuchen des Venn-Diagramms hier.

59voto

frozenjim Punkte 698

Ich finde es einfacher, sich Joins in der folgenden Reihenfolge vorzustellen:

  • CROSS JOIN - ein kartesisches Produkt aus beiden Tabellen. ALLE Joins beginnen hier
  • INNER JOIN - ein CROSS JOIN mit einem zusätzlichen Filter.
  • OUTER JOIN - ein INNER JOIN mit fehlenden Elementen (entweder aus der LINKEN oder der RECHTEN Tabelle) nachträglich hinzugefügt werden.

Bis ich dieses (relativ) einfache Modell herausfand, waren JOINS immer eine eher schwarze Kunst. Jetzt machen sie absolut Sinn.

Ich hoffe, das hilft mehr, als dass es verwirrt.

4 Stimmen

Damit ist die Frage nicht beantwortet.

52voto

mass Punkte 532

Um Ihre Frage zu beantworten

In der Syntax von Sql Server joins OUTER ist freigestellt

Dies wird im msdn-Artikel erwähnt: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx

Die folgende Liste zeigt also die Join-Äquivalenzsyntaxen mit und ohne OUTER

LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN

Andere gleichwertige Syntaxen

INNER JOIN => JOIN
CROSS JOIN => ,

Dotnet Mob Artice dringend empfehlen: Verknüpfungen in Sql Server enter image description here

4 Stimmen

Zum Missbrauch von Venn-Diagrammen siehe meinen Kommentar zu dieser Frage.

42voto

Yugo Amaryl Punkte 1229

Warum sind LEFT/RIGHT und LEFT OUTER/RIGHT OUTER dasselbe? Lassen Sie uns erklären, warum dieses Vokabular. Verstehen Sie, dass LEFT- und RIGHT-Joins Sonderfälle des OUTER-Joins sind und daher nichts anderes sein können als OUTER LEFT/OUTER RIGHT. Der OUTER-Join wird auch als FULL OUTER im Gegensatz zu LEFT- und RIGHT-Joins, die PARTIAL Ergebnisse des OUTER join. In der Tat:

Table A | Table B     Table A | Table B      Table A | Table B      Table A | Table B
   1    |   5            1    |   1             1    |   1             1    |   1
   2    |   1            2    |   2             2    |   2             2    |   2
   3    |   6            3    |  null           3    |  null           -    |   -
   4    |   2            4    |  null           4    |  null           -    |   -
                        null  |   5             -    |   -            null  |   5
                        null  |   6             -    |   -            null  |   6

                      OUTER JOIN (FULL)     LEFT OUTER (partial)   RIGHT OUTER (partial)

Jetzt ist klar, warum diese Vorgänge Aliase haben, und es ist auch klar, dass es nur 3 Fälle gibt: INNER, OUTER, CROSS. Mit zwei Unterfällen für die OUTER. Das Vokabular, die Art und Weise, wie Lehrer dies erklären, sowie einige Antworten oben, lassen es oft so aussehen, als gäbe es viele verschiedene Arten von Verknüpfungen. Aber eigentlich ist es sehr einfach.

2 Stimmen

"Es ist klar, dass es nur 3 Fälle gibt": interessant, aber fehlerhaft. Bedenken Sie, dass ein Inner Join ein spezialisierter Cross Join ist (d.h. Join-Prädikate in die Where-Klausel verschieben). Bedenken Sie außerdem, dass ein Outer Join überhaupt kein Join ist, sondern eine Union, bei der Nullen anstelle von "fehlenden" Spalten verwendet werden. Daher könnte man argumentieren, dass der Cross-Join der einzige erforderliche Join ist. In der relationalen Theorie wird derzeit davon ausgegangen, dass der natürliche Join alle Join-Anforderungen erfüllt. Nebenbei: Können Sie erklären, ob/wie das Vokabular " JOIN impliziert INNER JOIN " zu Ihrer Argumentation für outer join vocab passt?

32voto

Delickate Punkte 948

Es gibt nur 3 Verbindungsstellen:

  • A) Cross Join = kartesisch (z.B.: Tabelle A, Tabelle B)
  • B) Inner Join = JOIN (z.B: Tabelle A Join/Inner Join Tabelle B)
  • C) Äußere Verknüpfung:

       There are three type of outer join
       1)  Left Outer Join     = Left Join
       2)  Right Outer Join    = Right Join
       3)  Full Outer Join     = Full Join    

Ich hoffe, es hilft Ihnen.

12 Stimmen

Also insgesamt 5 Beitritte.

23voto

Harsh Punkte 237

Es gibt hauptsächlich drei Arten von JOIN

  1. Inner: holt die Daten, die in beiden Tabellen vorhanden sind
    • Nur JOIN bedeutet INNER JOIN
  2. Äußeres: Es gibt drei Arten

    • LEFT OUTER - - holt Daten, die nur in der linken Tabelle vorhanden sind und der Bedingung entsprechen
    • RIGHT OUTER - - holt Daten, die nur in der rechten Tabelle vorhanden sind und der Bedingung entsprechen
    • FULL OUTER - - holt Daten aus einer oder beiden Tabellen
    • (LEFT oder RIGHT oder FULL) OUTER JOIN kann ohne "OUTER" geschrieben werden
  3. Cross Join: Verbindet alles mit allem

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X