SQL Server: Was ist der Unterschied zwischen CROSS JOIN und FULL OUTER JOIN?
Was ist der Unterschied zwischen CROSS JOIN und FULL OUTER JOIN in SQL Server?
Sind Sie gleich, oder nicht? Bitte erklären. Wenn eines von beidem verwenden?
InformationsquelleAutor der Frage Saajid Ismail | 2010-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen cross join erzeugt Kartesisches Produkt zwischen den beiden Tabellen, zurückgeben aller möglichen Kombinationen aller Zeilen. Es hat keine
on
- Klausel, weil Sie nur mitmachen, alles mit allem.Einen
full outer join
ist eine Kombination aus einemleft outer
undright outer
beitreten. Es gibt alle Zeilen in beiden Tabellen, die der Abfrage entsprechen diewhere
- Klausel, und in Fällen, in denen dieon
Bedingung kann nicht erfüllt werden, für die Zeilen, bringt esnull
Werte für die ausgefüllten Felder.Diese wikipedia Artikel erläutert die verschiedenen Arten von joins mit Beispielen der Ausgabe einen Beispiel-Satz von Tabellen.
InformationsquelleAutor der Antwort Donnie
Eine Sache, die vielleicht nicht immer offensichtlich für einige ist, dass ein cross join mit einer leeren Tabelle (oder result-set) Ergebnisse in leere Tabelle (M x N; also M x 0 = 0)
Einem full outer join werden immer Zeilen, es sei denn, beide M und N sind 0.
InformationsquelleAutor der Antwort user2292493
Ich möchte noch hinzufügen, dass ein wichtiger Aspekt zu anderen Antworten, die eigentlich erklärt sich dieses Thema für mich in der besten Weise:
Wenn 2 verknüpften Tabellen enthalten M und N Zeilen, dann cross join wird immer (M x N) Zeilen, aber "full outer join" wird produziert von MAX(M,N) (M + N) Zeilen (je nachdem, wie viele Zeilen eigentlich mit "auf" - Prädikat).
EDIT:
Vom logischen query processing perspective, CROSS JOIN hat in der Tat immer produzieren M x N Zeilen. Was passiert mit FULL OUTER JOIN ist, dass sowohl die linken und rechten Tabellen sind "erhalten", als wenn beide LINKEN und RECHTEN join passiert ist. Also Zeilen, die nicht befriedigend AUF Prädikat, von beiden linken und rechten Tabellen Hinzugefügt werden, um das Ergebnis festzulegen.
InformationsquelleAutor der Antwort Konstantin
Cross join :Cross-Joins erzeugen Ergebnisse, die sich aus jeder Kombination von Zeilen von zwei oder mehr Tabellen. Das bedeutet, dass, wenn die Tabelle A hat 3 Zeilen und Tabelle B hat 2 Zeilen, ein CROSS-JOIN wird das Ergebnis in 6 Zeilen. Es gibt keine Beziehung zwischen den beiden Tabellen, die Sie buchstäblich nur produzieren jede mögliche Kombination.
Full outer Join : EIN FULL OUTER JOIN ist weder "Links" noch "rechts"— es ist beides! Es enthält alle Zeilen aus beiden Tabellen oder Ergebnis setzt die Teilnahme an der JOIN. Wenn keine übereinstimmenden Zeilen vorhanden, für die Zeilen, die auf der "Links" - Seite der VERKNÜPFUNG, sehen Sie Null-Werte aus der Ergebnismenge auf die "richtigen." Umgekehrt, wenn keine übereinstimmenden Zeilen vorhanden, für die Zeilen, die auf der "Recht" - Seite der VERKNÜPFUNG, sehen Sie Null-Werte aus der Ergebnismenge auf der "linken Seite."
InformationsquelleAutor der Antwort KuldipMCA
Für SQL Server
CROSS JOIN and FULL OUTER JOIN
unterschiedlich sind.CROSS JOIN
ist einfach das kartesische Produkt der beiden Tabellen unabhängig von irgendwelchen filter-Kriterien oder jede Bedingung.FULL OUTER JOIN
gibt eindeutige ErgebnisLEFT OUTER JOIN and RIGHT OUTER JOIN
von zwei Tabellen. Es muss auch die ON-Klausel zu Karte zwei Spalten von Tabellen.InformationsquelleAutor der Antwort Chirag
Cross Join: http://www.dba-oracle.com/t_garmany_9_sql_cross_join.htm
TLDR: Erzeugt alle möglichen Kombinationen zwischen 2 Tabellen (Carthesian Produkt)
(Full) Outer Join : http://www.w3schools.com/Sql/sql_join_full.asp
TLDR: Gibt jede Zeile im bot-Tabellen und Spiele diese Ergebnisse, dass die gleichen Werte haben
InformationsquelleAutor der Antwort Sjuul Janssen
Hi es sind die gleichen Konzepte, abgesehen von der NULL-Wert zurückgegeben.
Siehe unten:
InformationsquelleAutor der Antwort mario
Full outer join :
Dieser join kombiniert left outer join und right outer join. Es gibt Zeile der Tabelle, wenn die Bedingungen erfüllt sind und gibt den Wert null, wenn keine übereinstimmung vorhanden ist.
Bild : (http://www.pinaldave.com/bimg/March09UG/outer%20join.jpg)
Cross Join :
Dieser join ist ein Kartesisches beitreten, macht es nicht nötig, jede Bedingung zu verbinden. Das ResultSet enthält die Datensätze, die Multiplikation der Rekordzahl von beiden Tabellen.
Bild : (http://www.pinaldave.com/bimg/March09UG/cross%20join%20-%20half.jpg)
InformationsquelleAutor der Antwort Sujeet
Hier ist ein Beispiel, wo sowohl der FULL OUTER JOIN und CROSS JOIN-das gleiche Ergebnis zurückgeben set ohne NULL zurückgegeben. Bitte beachten Sie die 1 = 1 in der ON-Klausel für den FULL OUTER JOIN:
InformationsquelleAutor der Antwort Mo Gauvin
SQL-FULL OUTER JOIN
Den FULL OUTER JOIN gibt alle Zeilen aus der linken Tabelle (Tabelle1) und aus der rechten Tabelle (Tabelle2) unabhängig von dem Spiel.
Den FULL OUTER JOIN-Schlüsselwort, kombiniert das Ergebnis von beidem, LEFT OUTER JOIN und RIGHT OUTER JOIN
Referenz : http://datasciencemadesimple.com/sql-full-outer-join/
SQL CROSS JOIN
In SQL CROSS JOIN Jede Zeile der ersten Tabelle zugeordnet ist, mit jeder Zeile der zweiten Tabelle.
Anzahl von Zeilen produziert, die von einem ResultSet der CROSS JOIN-operation ist gleich der Anzahl der Zeilen in der ersten Tabelle multipliziert mit der Anzahl der Zeilen in der zweiten Tabelle.
CROSS JOIN ist auch bekannt als Kartesisches Produkt /join Kartesisches
Anzahl der Zeilen in der Tabelle A ist m, die Anzahl der Zeilen in der Tabelle B ist n und die daraus resultierende Tabelle m*n Zeilen
Referenz:http://datasciencemadesimple.com/sql-cross-join/
InformationsquelleAutor der Antwort karaimadai