Modellierungsspezialisten
DRITTE NORMALFORM!
„Bei der Abfrage, können wir dann alles wieder zusammenfügen!“
Mit Joins kann man zwei oder mehrere Tabellen verknüpfen
Unser Ziel: Das Erforschen von JOINs
Select Name, Straße, Hausnnummer, PLZ, , Klassenbezeichnung, Zweig FROM Schüler, Klassen
Leider Nein! Jeder mit Jedem!
SELECT * FROM Tabelle1, Tabelle2
SELECT Name, Straße, Hausnummer, PLZ, , Klassenbezeichnung, Zweig FROM Klassen, Schüler WHERE Schüler.ID = Klassen.Zweig
SELECT * FROM Tabelle1, Tabelle2 WHERE Tab1.id = Tab2.id SELECT * FROM Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.feld1 = Tabelle2.feld2
SELECT * FROM Bestellungen as bes INNER JOIN Kunden as kun ON bes.KundenId = kun.ID WHERE bes.Preis > 40;
SELECT * FROM Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.feld1 = Tabelle2.feld2 Tabelle1 Tabelle2 Datensatz 1 Datensatz 3 Datensatz 4 Datensatz 1 Datensatz 2 Datensatz 3 Ausgabe Datensatz 1 Datensatz 3
SELECT * FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.feld1 = Tabelle2.feld2 Tabelle1 Tabelle2 Datensatz 1 Datensatz 3 Datensatz 4 Datensatz 1 Datensatz 2 Datensatz 3 Ausgabe Datensatz 1 Datensatz 3 Datensatz 4 Datensatz 3
SELECT * FROM Tabelle1 RIGHT JOIN Tabelle2 ON Tabelle1.feld1 = Tabelle2.feld2 Tabelle1 Tabelle2 Datensatz 1 Datensatz 3 Datensatz 4 Datensatz 1 Datensatz 2 Datensatz 3 Ausgabe Datensatz 1 Datensatz 3 Datensatz 1 Datensatz 2 Datensatz 3
SELECT * FROM Tabelle1 OUTER JOIN Tabelle2 ON Tabelle1.feld1 = Tabelle2.feld2 Tabelle1 Tabelle2 Datensatz 1 Datensatz 3 Datensatz 4 Datensatz 1 Datensatz 2 Datensatz 3 Ausgabe Datensatz 1 Datensatz 3 Datensatz 4 Datensatz 1 Datensatz 2 Datensatz 3 Gibt es in ACCESS nicht!
statt: SELECT * FROM Tabelle1 OUTER JOIN Tabelle2 ON Tabelle1.feld = Tabelle2.feld Kann in manchen Datenbanksystemen auch geschrieben werden: SELECT * FROM Tabelle1 OUTER JOIN Tabelle2 USING (feld) Gibt es in ACCESS nicht!
Tabelle 4 Wert F Wert G Tabelle3 Wert D Wert E Tabelle1 Tabelle2 Wert A Wert B Wert C JOINs lassen sich beliebig oft verschachteln SELECT * FROM Tabelle1 INNER JOIN (Tabelle2 INNER JOIN (Tabelle3 INNER JOIN (Tabelle4 […] ON Tabelle4.WertF = Tabelle3.WertE) ON Tabelle3.WertD = Tabelle2.WertC) ON Tabelle1.WertA = Tabelle2.WertB
Tabelle1 Wert A Wert B Tabelle2 Wert C Tabelle3 Wert D Zwei JOINs aus einer Tabelle sind schwierig. Entweder findet man einen Weg die Tabellen anders zu verknüpfen, oder man benutzt die Schreibweise mit WHERE.