Databases Reference
In-Depth Information
AND T1.Tname<>T2.Tname
Das Ergebnis der Anfrage ist:
GNR
----------
1
2
3
Die Grundidee ist, die gleiche Tabelle zweimal in der FROM -
Zeile zu nutzen, um zwei unterschiedliche Einträge mit den
gewünschten Daten zu finden. Sucht man nach Gehegen mit
mindestens drei Tieren der gleichen Gattung, so lautet die An-
frage mit dieser Idee wie folgt.
SELECT DISTINCT T1.Gnr
FROM Tier T1, Tier T2, Tier T3
WHERE T1.Gnr=T2.Gnr
AND T2.Gnr=T3.Gnr
AND T1.Gattung=T2.Gattung
AND T2.Gattung=T3.Gattung
AND T1.Tname<>T2.Tname
AND T1.Tname<>T3.Tname
AND T2.Tname<>T3.Tname
Das Ergebnis der Anfrage ist:
GNR
----------
2
Man kann sich vorstellen, dass dieser Ansatz für größere Zah-
len sehr aufwändig wird. Mit der Gruppierung gibt es eine al-
ternative Anfragemöglichkeit, in der die gewünschte Anzahl
sehr flexibel in der HAVING -Zeile abgeändert werden kann. Die
Anfrage lautet:
SELECT Tier.Gnr
FROM Tier
GROUP BY Tier.Gnr, Tier.Gattung
HAVING COUNT(*)>=3
Das Ergebnis ist das Gleiche, wie bei der vorherigen Anfrage.
Dadurch, dass die Gattung auch in die GROUP BY -Zeile aufge-
nommen wurde, wird sichergestellt, dass pro Gehege nur die
gleichen Gattungen gezählt werden.
Eine Anfrage nach Gehegen, in denen mindestens drei unter-
schiedliche Gattungen leben, kann durch eine Gruppierung mit
geschickter Nutzung der COUNT -Funktion gelöst werden. Der
Ansatz ist, nur unterschiedliche Gattungen pro Gehege zu zäh-
Zählen von un-
terschiedlichen
Werten einer
Gruppe
180
Search WWH ::




Custom Search