Viele von Ihnen haben den vorherigen Artikel darüber gelesen, wie eine falsche Visualisierung, um zu erklären, wie JOINs funktionieren, in einigen Fällen verwirrend sein kann. Venn-Kreise können bestimmte Punkte beispielsweise nicht vollständig veranschaulichen, wenn die Werte in der Tabelle wiederholt werden.
In Vorbereitung auf die Aufnahme der sechsten Ausgabe des Zinc Prod-Podcasts (in der wir uns darauf geeinigt haben, den Artikel zu diskutieren) schien es mir gelungen zu sein, eine interessante Version der Visualisierung zu finden. Darüber hinaus wurde eine ähnliche Option auch in den Kommentaren zum Originalartikel angeboten.
Jeder ist unter dem Schnitt eingeladen
Also Visualisierung. Wie wir in den Kommentaren zum vorherigen Artikel herausgefunden haben, ist join eher ein kartesisches Produkt als eine Kreuzung. Wenn Sie sich ansehen, wie das kartesische Produkt dargestellt wird, werden Sie feststellen, dass es sich häufig um eine rechteckige Tabelle handelt, bei der die erste Beziehung entlang einer Achse und die zweite entlang der anderen verläuft. Somit sind die Elemente der Tabelle alle Kombinationen von allem.
Es ist schwierig, es abstrakt zu zeichnen, daher muss es ein Beispiel sein.
Nehmen wir an, wir haben zwei Tabellen. In einem von ihnen
id -- 1 1 6 5
In einem anderen:
id -- 1 1 2 3 5
Sofortiger Haftungsausschluss: Ich habe das Feld nur kurz als "id" bezeichnet. Viele im letzten Artikel waren empört, wie es wiederholt wird, Schande. Mach dir nicht zu viele Sorgen
Stellen Sie sich zum Beispiel vor, dies ist eine Tabelle mit täglichen Statistiken, in der für jeden Tag und jeden Benutzer Daten zum Besuch einer Site vorliegen. Im Allgemeinen nicht der Punkt.
Wir möchten also herausfinden, was mit den verschiedenen Tabellenverknüpfungen passiert. Beginnen wir mit CROSS JOIN:
CROSS JOIN
SELECT t1.id, t2.id FROM t1 CROSS JOIN t2
CROSS JOIN sind alle möglichen Kombinationen, die von zwei Tabellen empfangen werden können.
Dies kann wie folgt dargestellt werden: Auf der x-Achse - eine Tabelle, auf der y-Achse - eine andere, alle Zellen im Inneren (orange hervorgehoben) - ist dies das Ergebnis

INNER JOIN
INNER JOIN (oder einfach nur JOIN) ist das gleiche CROSS JOIN, das nur die Elemente enthält, die die im Konstrukt "ON" geschriebene Bedingung erfüllen. Achten Sie auf die Situation, in der Datensätze dupliziert werden - es werden vier Ergebnisse mit Einheiten angezeigt.
SELECT t1.id, t2.id FROM t1 INNER JOIN t2 ON t1.id = t2.id

LINKS BEITRETEN
LEFT OUTER JOIN (oder nur LEFT JOIN) ist dasselbe wie INNER JOIN, aber zusätzlich fügen wir null für Zeilen aus der ersten Tabelle hinzu, für die in der zweiten Tabelle nichts gefunden wurde
SELECT t1.id, t2.id FROM t1 LEFT JOIN t2 ON t1.id = t2.id

RICHTIG BEITRETEN
RIGHT OUTER JOIN (oder RIGHT JOIN) ist dasselbe wie LEFT JOIN, genau das Gegenteil. Das heißt, Dies ist INNER JOIN + null für Zeilen aus der zweiten Tabelle, für die in der ersten Tabelle nichts gefunden wurde
SELECT t1.id, t2.id FROM t1 RIGHT JOIN t2 ON t1.id = t2.id

→ Hier können Sie mit Anfragen spielen
Schlussfolgerungen
Es scheint eine einfache Visualisierung zu sein. Obwohl es Einschränkungen gibt: Es zeigt den Fall, wenn Gleichheit in ON geschrieben ist und nicht etwas Kniffliges (irgendein Boolescher Ausdruck). Außerdem wurde der Fall, in dem null zu den Tabellenwerten gehört, nicht berücksichtigt. Das heißt, Dies ist immer noch eine Vereinfachung, aber es scheint besser und genauer geworden zu sein als die Venn-Kreise.
Abonnieren Sie unseren Zinc Prod- Podcast, in dem wir Datenbanken, Softwareentwicklung und andere interessante Dinge besprechen.