Ich möchte eine kurze Aufschlüsselung der Arten von MySQL-Joins. Ich weiß davon, der Rest ist mir nicht sicher, was sie bedeuten.
- Komma getrennt (wofür genau ist diese Abkürzung?):
SELECT * FROM a, b WHERE b.id = a.beeId AND ...
- Informationen von a anzeigen, auch wenn in b keine Übereinstimmungen vorhanden sind:
SELECT * FROM a LEFT OUTER JOIN b ON b.id = a.beeId WHERE ...
Ich habe gesehen , andere schließt sich, aber wollen wissen , was sie von anderen unterscheidet, was ist INNER
/ OUTER
, wirkt sich das Hinzufügen LEFT
Dinge ändern.
Ich weiß bereits, wie Verknüpfungen funktionieren. Ich möchte nur wissen, ob es andere Arten von Verknüpfungen gibt oder ob es sich nur um unterschiedliche Methoden handelt, um das gleiche Ergebnis zu erzielen.
Antworten:
(c) Gefunden auf G + "Datenvisualisierung"
oder sehen Sie sich die folgenden Links für eine gute Übersicht an:
http://www.khankennels.com/blog/index.php/archives/2007/04/20/getting-joins/
http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
quelle
cross join
, was ein kartesisches Produkt ergibt.There's also a cartesian product or cross join, which as far as I can tell, can't be expressed as a Venn diagram:
Basierend auf Ihrem Kommentar finden Sie bei W3Schools am besten einfache Definitionen. Die erste Zeile jedes Typs enthält eine kurze Erläuterung des Join-Typs
END EDIT
Kurz gesagt, das durch Kommas getrennte Beispiel, von dem Sie gegeben haben
Wenn jeder Datensatz aus den Tabellen a und b mit den Kommas zwischen den Tabellen ausgewählt wird, kann dies auch in Spalten wie verwendet werden
Anschließend werden die angewiesenen Informationen in der Zeile abgerufen, in der die Spalte b.id und die Spalte a.beeId in Ihrem Beispiel übereinstimmen. In Ihrem Beispiel werden also alle Informationen aus den Tabellen a und b abgerufen, wobei die b.id gleich a.beeId ist. In meinem Beispiel werden alle Informationen aus der Tabelle b und nur Informationen aus der Spalte a.beeName abgerufen, wenn die b.id der a.beeId entspricht. Beachten Sie, dass es auch eine AND-Klausel gibt, mit deren Hilfe Sie Ihre Ergebnisse verfeinern können.
Einige einfache Tutorials und Erklärungen zu mySQL-Joins und Links-Joins finden Sie in den mySQL-Tutorials von Tizag. Sie können auch die Website von Keith J. Brown besuchen, um weitere Informationen zu Joins zu erhalten, die ebenfalls recht gut sind.
ich hoffe das hilft dir
quelle
Ich habe 2 Tabellen wie diese:
INNER JOIN kümmert sich um beide Tische
INNER JOIN kümmert sich um beide Tabellen, sodass Sie nur dann eine Zeile erhalten, wenn beide Tabellen eine haben. Wenn es mehr als ein übereinstimmendes Paar gibt, erhalten Sie mehrere Zeilen.
Für INNER JOIN macht es keinen Unterschied, ob Sie die Reihenfolge umkehren, da beide Tabellen betroffen sind:
Sie erhalten die gleichen Zeilen, aber die Spalten sind in einer anderen Reihenfolge, da wir die Tabellen in einer anderen Reihenfolge erwähnt haben.
LEFT JOIN kümmert sich nur um den ersten Tisch
LEFT JOIN kümmert sich um die erste Tabelle, die Sie geben, und kümmert sich nicht viel um die zweite, sodass Sie immer die Zeilen aus der ersten Tabelle erhalten, auch wenn in der zweiten keine entsprechende Zeile vorhanden ist:
Oben sehen Sie alle Zeilen von table_a, obwohl einige von ihnen mit nichts in Tabelle b übereinstimmen, aber nicht alle Zeilen von table_b - nur diejenigen, die mit etwas in table_a übereinstimmen.
Wenn wir die Reihenfolge der Tabellen umkehren, verhält sich LEFT JOIN anders:
Jetzt erhalten wir alle Zeilen von table_b, aber nur übereinstimmende Zeilen von table_a.
RIGHT JOIN kümmert sich nur um den zweiten Tisch
a RIGHT JOIN b
Sie erhalten genau die gleichen Zeilen wieb LEFT JOIN a
. Der einzige Unterschied ist die Standardreihenfolge der Spalten.Dies sind die gleichen Zeilen wie
table_b LEFT JOIN table_a
im Abschnitt LEFT JOIN.Ähnlich:
Ist die gleichen Zeilen wie
table_a LEFT JOIN table_b
.Kein Join gibt Ihnen Kopien von allem
Keine Join-Klausel: Wenn Sie Ihre Tabellen ohne JOIN-Klausel schreiben, nur durch Kommas getrennt, erhalten Sie jede Zeile der ersten Tabelle neben jeder Zeile der zweiten Tabelle in jeder möglichen Kombination:
(Dies ist aus meinem Blog-Beitrag Beispiele für SQL-Join-Typen )
quelle
Vollständige äußere Verknüpfung ist in MySQL nicht vorhanden. Möglicherweise müssen Sie eine Kombination aus linker und rechter Verknüpfung verwenden.
quelle