Modellierungsspezialisten DRITTE NORMALFORM! „Bei der Abfrage, können wir dann alles wieder...

Post on 06-Apr-2016

213 views 0 download

Transcript of Modellierungsspezialisten DRITTE NORMALFORM! „Bei der Abfrage, können wir dann alles wieder...

Modellierungsspezialisten

DRITTE NORMALFORM!

„Bei der Abfrage, können wir dann alles wieder zusammenfügen!“

Mit Joins kann man zwei oder mehrereTabellen verknüpfen

Unser Ziel:

Das Erforschen von

JOINs

Select Name, Straße, Hausnnummer, PLZ, email, Klassenbezeichnung, Zweig FROM Schüler, Klassen

Leider Nein!Jeder mit Jedem!

SELECT *FROM Tabelle1, Tabelle2

SELECT Name, Straße, Hausnummer, PLZ, Email, Klassenbezeichnung, ZweigFROM Klassen, SchülerWHERE Schüler.ID = Klassen.Zweig

SELECT *FROM Tabelle1, Tabelle2WHERE Tab1.id = Tab2.id

SELECT *FROM Tabelle1 INNER JOIN Tabelle2 ONTabelle1.feld1 = Tabelle2.feld2

SELECT * FROM Bestellungen as besINNER JOIN Kunden as kunON bes.KundenId = kun.ID

WHERE bes.Preis > 40;

SELECT *FROM Tabelle1INNER JOIN Tabelle2 ONTabelle1.feld1 = Tabelle2.feld2

Tabelle1 Tabelle2Datensatz 1

Datensatz 3Datensatz 4

Datensatz 1Datensatz 2Datensatz 3

AusgabeDatensatz 1 Datensatz

1

Datensatz 3 Datensatz 3

SELECT *FROM Tabelle1LEFT JOIN Tabelle2ON Tabelle1.feld1 = Tabelle2.feld2

Tabelle1 Tabelle2Datensatz 1

Datensatz 3Datensatz 4

Datensatz 1Datensatz 2Datensatz 3

AusgabeDatensatz 1 Datensatz

1

Datensatz 3

Datensatz 4

Datensatz 3

SELECT *FROM Tabelle1RIGHT JOIN Tabelle2ON Tabelle1.feld1 = Tabelle2.feld2

Tabelle1 Tabelle2Datensatz 1

Datensatz 3Datensatz 4

Datensatz 1Datensatz 2Datensatz 3

AusgabeDatensatz 1

Datensatz 3

Datensatz 1

Datensatz 2

Datensatz 3

SELECT *FROM Tabelle1OUTER JOIN Tabelle2ON Tabelle1.feld1 = Tabelle2.feld2

Tabelle1 Tabelle2Datensatz 1

Datensatz 3Datensatz 4

Datensatz 1Datensatz 2Datensatz 3

AusgabeDatensatz 1

Datensatz 3

Datensatz 4

Datensatz 1

Datensatz 2

Datensatz 3

Gibt es in ACCESS nicht!

statt:SELECT *FROM Tabelle1OUTER JOIN Tabelle2ON Tabelle1.feld = Tabelle2.feld

Kann in manchen Datenbanksystemen auch geschrieben werden:SELECT *FROM Tabelle1OUTER JOIN Tabelle2USING (feld) Gibt es

in ACCESS nicht!

Tabelle 4Wert F Wert G

Tabelle3Wert D Wert E

Tabelle1 Tabelle2Wert A Wert B Wert C

JOINs lassen sich beliebig oft verschachteln

SELECT * FROM Tabelle1INNER JOIN (Tabelle2 INNER JOIN (Tabelle3 INNER JOIN (Tabelle4

[…]

ON Tabelle4.WertF = Tabelle3.WertE) ON Tabelle3.WertD = Tabelle2.WertC)ON Tabelle1.WertA = Tabelle2.WertB

Tabelle1Wert A Wert B

Tabelle2Wert C

Tabelle3Wert 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.