Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung | ||
faecher:informatik:oberstufe:datenbanken:joinsii:start [21.10.2020 19:35] – angelegt sbel | faecher:informatik:oberstufe:datenbanken:joinsii:start [23.11.2020 21:03] – [Beispiel:] sbel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== SQL - Joins II ====== | ====== SQL - Joins II ====== | ||
+ | |||
+ | Mit dem '' | ||
+ | |||
+ | Es wird aloso ein einzelnes Statement an das DMBS gesendet mit dem mehrere Tabellen zugleich abgefragt und direkt verknüpft werden - das Prinzip bleibt jedoch gleich, auch beim Einsatz des JOIN Statements müssen Primär- und Fremdschlüsselspalten angegeben werden, damit eine sinnvolle Ergebnistabelle zurückgegeben wird. | ||
+ | |||
+ | In MySQL stehen vier JOIN-Typen zur Verfügung: LEFT JOIN, RIGHT JOIN, INNER JOIN und FULL JOIN. | ||
+ | |||
+ | ===== LEFT JOIN ===== | ||
+ | |||
+ | Die Syntax für einen LEFT JOIN ist wie folgt: | ||
+ | <code sql> | ||
+ | SELECT * FROM tabelle1 | ||
+ | LEFT JOIN tabelle2 ON tabelle1.SpaltennameA = tabelle2.Spaltenname | ||
+ | LEFT JOIN tabelle3 ON tabelle1.SpaltennameB = tabelle3.Spaltenname | ||
+ | WHERE ... | ||
+ | </ | ||
+ | |||
+ | LEFT JOIN bedeutet nun, dass stets alle Zeilen der Tabelle zurückgegeben, | ||
+ | |||
+ | Es kann jetzt aber sein, dass in der Tabelle die per LEFT JOIN verknüpft wird kein passender Eintrag gefunden wird, | ||
+ | es gibt also keinen Datensatz in den beiden Tabellen, bei denen '' | ||
+ | |||
+ | ==== Beispiel: ==== | ||
+ | <code sql> | ||
+ | SELECT * FROM lehrer LEFT JOIN schueler ON lehrer.id=schueler.KLID | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Es werden also die Lehrer zusammen mit den Schülern ausgegeben, die sie unterrichten. Weil als Selektor '' | ||
+ | |||
+ | Natürlich kann man nun wie immer selektieren, | ||
+ | |||
+ | <code sql> | ||
+ | SELECT lehrer.name, | ||
+ | FROM lehrer | ||
+ | LEFT JOIN schueler ON lehrer.id=schueler.KLID | ||
+ | ORDER BY lehrer.name ASC | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | <code sql> | ||
+ | SELECT lehrer.name, | ||
+ | FROM lehrer | ||
+ | LEFT JOIN schueler ON lehrer.id=schueler.KLID | ||
+ | WHERE lehrer.name LIKE " | ||
+ | ORDER BY lehrer.name ASC | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Hier kann man auch nochmal schön demonstrieren, | ||
+ | |||
+ | <code sql> | ||
+ | SELECT lehrer.name | ||
+ | FROM lehrer | ||
+ | LEFT JOIN schueler ON lehrer.id=schueler.KLID | ||
+ | ORDER BY lehrer.name ASC | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===== RIGHT JOIN ===== | ||