Databases Reference
In-Depth Information
Grundsätzlich kann man davon ausgehen, dass zunächst die
innere Anfrage ausgewertet wird und im nächsten Schritt die
Auswertung der umgebenden Anfrage geschieht.
Statt der einfachen Ausgabe in einer zusätzlichen Spalte, kön-
nen die Ergebnisse einer Anfrage in einer SELECT -Zeile auch
zur Berechnung genutzt werden. Dabei kann der berechnete
Wert, wie andere Werte auch, mit anderen Attributwerten ver-
knüpft werden. Mit der folgenden Anfrage wird der Anteil je-
des Geheges an der Gesamtfläche ausgegeben.
Berechnungen
mit Unterabfra-
geergebnissen
SELECT Gehege.Gname,
Gehege.Flaeche*100/
(SELECT SUM(Gehege.Flaeche)
FROM Gehege) Anteil
FROM Gehege
Das Ergebnis der Anfrage ist:
GNAME ANTEIL
------ ----------
Wald 46,1538462
Feld 30,7692308
Weide 23,0769231
Wichtig bei dieser Form der Schachtelung der Anfragen ist die
Verantwortung des Nutzers dafür, dass das Ergebnis der inne-
ren Anfrage genau der gewünschten Form entspricht. Ist dies
nicht der Fall, erhält man bei der Ausführung der Anfrage eine
Fehlermeldung, wie folgende Anfrage zeigt, bei der eine Ver-
knüpfung mit einer einspaltigen, aber dreizeiligen Ergebnista-
belle versucht wird.
SELECT Gehege.Gname,
(SELECT Art.Gattung
FROM Art)
FROM Gehege
Verantwortung
des Anfrageers-
tellers für kor-
rekte Ergebnis-
form
Eine typische Reaktion des Systems kann wie folgt aussehen.
Unterabfrage für eine Zeile liefert mehr als eine
Zeile
Falls die Unterabfrage kein Ergebnis liefert, wird eine Spalte
mit NULL-Werten erzeugt, wie folgendes Beispiel zeigt.
SELECT Gehege.Gname,
(SELECT Art.Gattung
FROM Art
WHERE Art.MinFlaeche=7) G7
FROM Gehege
197
Search WWH ::




Custom Search