Databases Reference
In-Depth Information
ten. Dazu wird in der HAVING -Bedingung ein Vergleich mit der
zu bestimmenden kleinsten Gehegefläche durchgeführt. An-
schaulich passen z. B. die beiden Bären im Gehege Wald mit ih-
rem Bedarf von 16 nicht in das kleinste Gehege mit einer Fläche
von 15. Die zugehörige Anfrage lautet:
SELECT Gehege.Gname
FROM Gehege, Tier, Art
WHERE Gehege.Gnr=Tier.Gnr
AND Tier.Gattung=Art.Gattung
GROUP BY Gehege.Gname
HAVING SUM(Art.Minflaeche)<=
(SELECT MIN(Gehege.Flaeche)
FROM Gehege)
Das Ergebnis der Anfrage ist
GNAME
------
Feld
Weide
In der Einleitung dieses Unterkapitels wurde beschrieben, dass
kein Bezug zur äußeren Anfrage bezüglich der Tabellen in der
inneren Anfrage aufgebaut werden darf. In Teilanfragen dürfen
entweder nur vollständig neue Berechnungen, wie im vorheri-
gen Beispiel gezeigt, oder Elemente stehen, die auch sonst be-
reits in der HAVING -Bedingung stehen durften. Dies sind Ag-
gregatsfunktionen für Berechnungen in den jeweiligen Grup-
pen und Attribute, die in der GROUP BY -Zeile genannt werden.
Folgende Anfrage ist z. B. nicht möglich.
SELECT Gehege.Gname, SUM(Art.Minflaeche)
FROM Gehege, Tier, Art
WHERE Gehege.Gnr=Tier.Gnr
AND Tier.Gattung=Art.Gattung
GROUP BY Gehege.Gname
HAVING EXISTS(SELECT *
FROM Tier T2
WHERE Gehege.Gnr=T2.Gnr
AND T2.Gattung='Baer')
Generell hat die Anfrage einen Sinn, da der Flächenverbrauch
der Tiere in den Gehegen berechnet werden soll und in der in-
neren Anfrage zusätzlich überprüft wird, ob ein Bär im Gehege
lebt. Eine zugehörige Fehlermeldung besagt aber, dass ein Zu-
griff auf Gehege.Gnr nicht erlaubt ist, da das Attribut nicht in
der GROUP BY -Zeile steht. Im konkreten Fall kann diese Infor-
mation in die GROUP BY -Zeile aufgenommen werden, da der
Teilanfrage in
HAVING-
Bedingung mit
eigener Berech-
nung
eingeschränkter
Bezug auf äuße-
re Anfrage
210
Search WWH ::




Custom Search