Hallo hansdampf66,
ich versuche es mal mit meinen Worten zu erläutern, hierzu Beispieldaten:
Tabelle student:
1 Hans
2 Willi
3 Jens
Tabelle vorlesung:
11
12
13
Tabelle hoeren:
11 1
11 2
12 2
12 3
13 2
Zunächst den innersten Select:
- Hier werden alle Datensätze der ‚hören‘ Tabelle selektiert, bei denen die VorlesungsNr mit der VorlesungsNr aus der Tabelle ‚vorlesung‘ und die MatrNr mit der MatrNr aus der Tabelle ‚student‘ übereinstimmt. Hier sind die Verknüpfung zwischen den Tabellen untereinander definiert. Der Select liefert alle Datensätze aus der Tabelle ‚hoeren‘, bei denen diese Bedingungen erfüllt sind.
Nun den mittleren Select:
2) Es werden alle Datensätze aus der Tabelle ‚vorlesung‘ selektiert, bei denen kein Ergebnis aus 1) geliefert wurde. Daher werden hier alle Vorlesungen selektiert, die nicht von allen Studenten besucht wurden.
Nun den äußeren Select:
3) Es werden nun alle Studenten selektiert, bei denen kein Ergebnis aus 2) geliefert wurde.
Da 2) alle Vorlesungen liefert die nicht von allen Studenten besucht wurden, erhält man daher alle Studenten die alle Vorlesungen besucht haben (Im Beispiel Willi).
Würde man hier ein „exists“ statt dem „not exists“ angeben, erhält man alle Studenten, die nicht alle Vorlesungen besucht haben (Im Beispiel Hans und Jens).
Ich hoffe, ich konnte es einigermaßen verständlich erläutern.
Gruß Jürgen