In SQL ein Join ist das eigentlich eine Kreuzung? Und es ist auch eine Verknüpfung oder ein "Sideway-Union"?
Ich dachte immer, ein Join in SQL als eine Art der Verknüpfung zwischen zwei Tabellen.
Beispielsweise
select e.name, d.name from employees e, departments d
where employees.deptID = departments.deptID
In diesem Fall ist es die Verknüpfung von zwei Tabellen zeigen, um jedem Mitarbeiter eine Abteilung, die den Namen anstelle der Abteilungs-ID. Und wie eine Art "Verknüpfung" oder "Union" sideway".
Aber, nach dem lernen über inner join vs. outer join, es zeigt, dass eine Verknüpfung (Inner join) ist eigentlich eine Kreuzung.
Zum Beispiel, wenn eine Tabelle hat die ID 1, 2, 7, 8, während in einer anderen Tabelle hat die ID 7 und 8 nur, die Art und Weise erhalten wir den Schnittpunkt ist:
select * from t1, t2 where t1.ID = t2.ID
bekommen die beiden Datensätze der "7 und 8". So ist es eigentlich eine Kreuzung.
Wir haben also die "Schnittmenge" von 2 Tabellen. Vergleichen Sie diese mit der "Union" - Betrieb auf 2 Tabellen. Kann eine Verknüpfung gedacht werden als eine "Schnittmenge"? Aber was ist die "Verlinkung" oder "sideway-union" - Aspekt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein visuelle Erklärung von SQL-joins von Jeff, die Antwort auf einige Ihrer Fragen.
Du bist auf dem richtigen Weg; die Zeilen zurückgegeben, die von einem
INNER JOIN
sind solche, die erfüllen die join-Bedingungen. Aber das ist wie eine Kreuzung, nur weil man Gleichheit in die join-Bedingung angewendet, um Spalten aus jeder Tabelle.Sich auch bewusst sein, dass
INTERSECTION
ist bereits eine SQL-operation, und es hat eine andere Bedeutung-und es ist nicht das gleiche wieJOIN
.Einer SQL -
JOIN
kann produzieren einem neuen Typ der Zeile, in dem alle Spalten aus verknüpften Tabellen. Zum Beispiel: col4, col5, und col6 existiert nicht in Tabelle A, aber Sie existieren in, das Ergebnis einer join-Tabelle B:Einer SQL -
INTERSECTION
Zeilen zurückgibt, die in zwei separaten Tabellen, die bereits die gleichen Spalten.Dies geschieht, um zu produzieren das gleiche Ergebnis wie in der folgenden anzuschließen:
Nicht jede Marke von Datenbank unterstützt die
INTERSECTION
Betreiber.Join 'links' oder erm... verbindet Zeilen aus zwei Tabellen. Ich denke, das ist, was du meinst mit "seitwärts union', obwohl ich persönlich denke, das ist eine schreckliche Art und Weise zu formulieren. Aber es gibt verschiedene Arten von Verknüpfungen, die leicht verschiedene Dinge:
Diese Seite auf Jeff Atwood ' s blog beschrieben, andere Möglichkeiten.
Outer-Join - nicht mit Union oder Union All.
Z.B. ein "null" würde nicht auftreten, als Ergebnis der Union oder Union All-Vorgang, sondern es ist das Ergebnis eines Outer-Join.
INNER JOIN
behandelt zweiNULL
s da zwei verschiedene Werte. Also, wenn Sie beitreten, basierend auf einer null-Spalte hat, und wenn beide Tabellen habenNULL
Werten in dieser Spalte, dannINNER JOIN
ignoriert diese Zeilen.Daher korrekt abrufen alle gängigen Zeilen zwischen zwei Tabellen,
INTERSECT
verwendet werden soll.INTERSECT
behandelt zweiNULL
s als den gleichen Wert.Beispiel(SQLite):
Erstellen Sie zwei Tabellen mit nullable Spalten:
Einfügen
NULL
Werte:Abrufen gemeinsamen Zeilen mit
INNER JOIN
(Dies zeigt, keine Ausgabe):Abrufen gemeinsamen Zeilen mit
INTERSECT
(Dies korrekt zeigt die gemeinsame Zeile):Fazit:
Obwohl, viele Male sowohl
INTERSECT
undINNER JOIN
können verwendet werden, um die gleiche Ergebnisse, Sie sind nicht das gleiche und sollte abgeholt werden, je nach situation.