Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:datenbanken:joinsii:start [23.11.2020 20:10] – [INNER JOIN] sbel | faecher:informatik:oberstufe:datenbanken:joinsii:start [16.11.2023 10:48] (aktuell) – [SQL - Joins II] Svenja Müller | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== SQL - Joins II ====== | ====== SQL - Joins II ====== | ||
- | Mit dem '' | + | 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. | + | Es wird also 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 | + | In MySQL stehen |
===== LEFT JOIN ===== | ===== LEFT JOIN ===== | ||
Zeile 17: | Zeile 17: | ||
</ | </ | ||
- | LEFT JOIN bedeutet nun, dass stets alle Zeilen der Tabelle zurückgegeben, | + | 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 kann jetzt aber sein, dass in der Tabelle die per LEFT JOIN verknüpft wird kein passender Eintrag gefunden wird, | ||
Zeile 79: | Zeile 79: | ||
==== INNER JOIN ==== | ==== INNER JOIN ==== | ||
- | Bei einem INNER JOIN muss eine passende Zeile in den Tabellen gefunden werden, | + | Bei einem INNER JOIN muss eine passende Zeile in den Tabellen gefunden werden, |
<code sql> | <code sql> | ||
SELECT * FROM lehrer INNER JOIN schueler ON lehrer.id=schueler.KLID | SELECT * FROM lehrer INNER JOIN schueler ON lehrer.id=schueler.KLID | ||
Zeile 86: | Zeile 85: | ||
{{ : | {{ : | ||
+ | |||
+ | <wrap hi>Das entspricht unserer bisherigen Praxis, zunächst das kartesische Produkt aller beteiligten Tabellen abzufragen((Das geht übrigens mit einem "CROSS JOIN" auch, d.h. '' | ||
+ | |||
+ | <code sql> | ||
+ | SELECT * FROM lehrer, schueler WHERE lehrer.id=schueler.KLID | ||
+ | </ | ||
+ | |||
+ | ===== Aufgaben ===== | ||
+ | |||
+ | {{: | ||
+ | === (A1) === | ||
+ | |||
+ | Vollziehe die Beispiele oben mit der Datenbank {{ : | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | |||
+ | === (A2) === | ||
+ | |||
+ | * Lösche zunächst die Tabellen '' | ||
+ | * Versehe die Tabellen mit Primär und Fremdschlüsseln. | ||
+ | * Skizziere ein ER Diagramm. | ||
+ | |||
+ | Löse die folgenden Aufgaben mit Hilfe des kartesischen Produkts und mit einem INNER JOIN. | ||
+ | * Erstelle eine Klassenliste der 10a | ||
+ | * Erstelle eine Liste aller Schüler, die Feynman als Betreuer haben. | ||
+ | * Wieviele Schüler befinden sich in der Jahrgangsstufe 6? | ||
+ | * Wieviele Schüler haben einen Nachnamen der mit H beginnt. | ||
+ | * Erstelle eine Liste aller Schüler, die in der Unterstufe sind und Salvador Dali als Betreuer haben. |