Databases Reference
In-Depth Information
D. h. das untersuchte Gehege ist abhängig von einem Eintrag in
der Tabelle Gehege. Diese Verbindung wird durch folgende
Anfrage hergestellt.
SELECT Gehege.Gname
FROM Gehege
WHERE 'Hase' IN (SELECT Tier.Gattung
FROM Tier
WHERE Gehege.Gnr=Tier.Gnr)
Das Ergebnis der Anfrage ist:
GNAME
------
Feld
Weide
Anschaulich erkennt man, dass in der äußeren Anfrage eine
Untersuchung für alle Gehege startet. Für jedes dieser Gehege
wird dann in der WHERE -Bedingung untersucht, ob sich ein Ha-
se in diesem Gehege befindet. Zu diesem Zweck muss in der
inneren Anfrage auf das äußere Gehege Bezug genommen
werden. Grundsätzlich gilt, dass alle Tabellen der äußeren An-
frage auch in der inneren Teilanfrage zugänglich sind. Dabei
müssen auch lokale Umbenennungen der Tabellen in der inne-
ren Teilanfrage berücksichtigt werden.
Bei der Erstellung solcher geschachtelten Anfragen machen An-
fänger häufig den Fehler, die Information aus der äußeren An-
frage in der inneren Anfrage zu wiederholen. Die letzte Anfra-
ge sieht dann in falscher Form wie folgt aus:
SELECT Gehege.Gname
FROM Gehege
WHERE 'Hase' IN (SELECT Tier.Gattung
FROM Gehege,Tier
WHERE Gehege.Gnr=Tier.Gnr)
Diese Anfrage wird mit folgendem, zunächst irritierenden Er-
gebnis ausgeführt:
GNAME
------
Wald
Feld
Weide
Es ist zu beachten, dass die Gehege-Information in der inneren
Anfrage die Gehege-Information der äußeren Anfrage über-
deckt, diese ist nicht sichtbar. Die Gehege-Information der inne-
ren Anfrage hat also nichts mit der äußeren Anfrage zu tun. Mit
Abarbeitung ge-
schachtelter An-
fragen
Typische Fehler-
quelle bei der
Schachtelung
von Anfragen
205
Search WWH ::




Custom Search