Was macht eine bestimmte Tabelle zur linken Tabelle?
Ist es so, dass die Tabelle im Teil "Von" der Abfrage angegeben ist?
Oder ist es die linke Tabelle, weil sie sich auf der linken Seite des Operators = befindet?
Sind die folgenden äquivalent
SELECT *
FROM left_table
LEFT JOIN right_table ON left_table.right_id = right_table.id
und
SELECT *
FROM left_table
LEFT JOIN right_table on right_table.left_id = left_table.id
???
Vielen Dank
Antworten:
Die linke Tabelle ist die erste Tabelle in der Auswahl. Ja, Ihre beiden Beispiele sind gleichwertig.
quelle
Der richtige Tisch ist immer der Tisch, an dem Sie teilnehmen. Also ja, beide Aussagen sind gleichwertig.
[Tabelle] ist immer die richtige Tabelle.
quelle
Ungefähr "links" ist das Ergebnis von allem, was beim Lesen von links nach rechts zuerst in der gesamten FROM-Klausel erscheint - einschließlich des Ergebnisses anderer JOINs, Unterabfragen, VIEWs und STORED PROCEDURES.
Beide SQL-Anweisungen sind äquivalent, da der
=
Operator imON
Teil derJOIN
Klausel symmetrisch ist (wenn a = b, dann b = a), sodass das Ergebnis unabhängig von der Reihenfolge dasselbe ist.Der reguläre Join zeigt nur die Zeilen an, in denen die ON-Klausel des JOIN wahr ist, während der LEFT JOIN auch die Datensätze von "left" anzeigt, wenn die Bedingung falsch ist (wobei NULL für jede Spalte von "right" in SELECT angezeigt wird).
Zum Beispiel:
-- People: -- Car id | name owner_id | model ---+------------ ---------+------------ 1 | Paul 1 | Ferrari 2 | Nancy 2 | Porsche 3 | Arthur NULL | Lamborghini 4 | Alfred 10 | Maserati > select people.name, car.model from people join car on car.owner_id=people.id; name | model ---------+-------------- Paul | Ferrari Nancy | Porsche 2 record(s) found > select people.name, car.model from people left join car on car.owner_id=people.id; name | model ---------+-------------- Paul | Ferrari Nancy | Porsche Arthur | NULL Alfred | NULL 4 record(s) found > select people.name, car.model from people left join car on people.id = car.owner_id; name | model ---------+-------------- Paul | Ferrari Nancy | Porsche Arthur | NULL Alfred | NULL 4 record(s) found
quelle
Eine ziemlich gute Anleitung für Joins finden Sie hier: http://en.wikipedia.org/wiki/Join_(SQL)
Und ja, beide Aussagen sind gleichwertig :-)
quelle
Ja, dies wird von der Seite des JOIN-Operators bestimmt, auf dem die Tabelle angezeigt wird. Ihre beiden Beispiele sind in der Tat gleichwertig.
quelle