Databases Reference
In-Depth Information
stimmen müssen. Weiterhin müssen Attribute der GROUP BY -
Zeile nicht in der SELECT -Zeile zur Ausgabe genutzt werden.
Mit der nächsten Anfrage sollen die Anzahlen der Tiere pro
Gattung mit der Gattung zusammen ausgegeben werden. Dabei
soll die Anzahl der Tiere höchstens 3 sein und es sollen keine
Schafe berücksichtigt werden. Die Anfrage lautet:
SELECT Tier.Gattung, COUNT(*) Tieranzahl
FROM Tier
GROUP BY Tier.Gattung
HAVING Tier.Gattung<>'Schaf'
AND COUNT(*)<=3
Das Ergebnis der Anfrage ist:
GATTUNG TIERANZAHL
------- ----------
Baer 2
In der letzten Anfrage wurde ein Attribut aus der GROUP BY -
Zeile in der HAVING -Bedingung genutzt. Bei der Auswertung
werden also zunächst Gruppen bezüglich der Gattungen gebil-
det und dann mit der HAVING -Bedingung eine Gattung aussor-
tiert. Alternativ hätte man die Teilbedingung für das Gruppen-
attribut auch in die WHERE -Bedingung einbauen können. Die
folgende Anfrage führt zum gleichen Ergebnis.
SELECT Tier.Gattung, COUNT(*) Tieranzahl
FROM Tier
WHERE Tier.Gattung<>'Schaf'
GROUP BY Tier.Gattung
HAVING COUNT(*)<=3
Die Frage, welcher der beiden Ansätze gewählt werden sollte,
lässt sich als Geschmackssache ansehen. Der Ansatz, das Attri-
but in der HAVING -Bedingung zu nennen, hat den kleinen Vor-
teil, dass man direkt sieht, dass sich die Bedingung auf die
Auswahl der Gruppen auswirkt. Die andere Anfrage wird
meist etwas schneller berechnet.
Bei den letzten drei Beispielen wird man an ein Beispiel aus
dem Unterkapitel „7.4 Anfragen über mehrere Tabellen“ erin-
nert, bei denen mehrere Einträge einer Tabelle betrachtet wer-
den. Die folgende Anfrage gibt z. B. die Gehege aus, in denen
mindestens zwei Tiere der gleichen Gattung leben.
Gruppierungsat-
tribute in
WHERE oder
HAVING
SELECT DISTINCT T1.Gnr
FROM Tier T1, Tier T2
WHERE T1.Gnr=T2.Gnr
AND T1.Gattung=T2.Gattung
179
Search WWH ::




Custom Search