Kunden kaufen Artikel, welche in Aufträgen stehen. Ein Auftrag
kann aus mehreren Artikelpositionen bestehen. Jeder Artikel
gehört zu genau einer Artikelgruppe. Nun möchte man von jedem
Kunden wissen, welche Artikelgruppen er gekauft hat.
Wenn wie hier mehr als zwei Tabellen abgefragt werden (also wenn
hinter dem select-Befehl Spalten aus mehr als zwei Tabellen stehen),
dann muß man folgendermaßen vorgehen:
1. In die select-Zeile schreibt man alle gesuchten Werte, die
angezeigt werden sollen:
select kundenname, warengruppenname
2.Dann erstellt man oder besorgt sich das ER-Modell der Datenbank:
3. Wir erstellen die from-Zeile:
In die "from-Zeile" schreibt man alle Tabellen, aus denen Werte
in der select-Zeile ausgegeben werden sollen (kunde, warengruppe).
Außerdem schreibt man alle Tabellen in diese Zeile, die im
ER-Modell zwischen diesen Tabellen stehen:
select kundenname, artikelgruppenname
from kunde, auftrag, auftragsposition, artikel, warengruppe
4. Wir erstellen die where-Klausel:
Nun sucht man die Spalten, die die Beziehungen zwischen diesen
Tabellen herstellen. Beispiel: Die Tabellen Kunde und Auftrag sind
über die Spalte "Kundennummer" verbunden, weil die Kundennummer
in beiden Tabellen auftaucht.
Diese Spalte muß in beiden Tabelle gleich sein, den wir wollen
ja auch nur die Kombinationen, die wirklich vorhanden sind, und
nicht die, die theoretisch möglich sind (das wäre das Kreuzprodukt).
Wir formulieren also die where-Bedingung:
where kunde.kundennummer = auftrag.kundennummer
Mit den anderen Entities machen wir das gleiche. Es ergibt
sich schließlich folgende where-Klausel:
where kunde.kundennummer = auftrag.kundennummer
AND auftrag.auftragsnummer = auftragsposition.auftragsnummer
AND auftragsposition.artikelnummer = artikel.artikelnummer
AND artikel.gruppennummer = warengruppe.gruppennummer