Databases Reference
In-Depth Information
GNR
----------
2
3
2
3
Es fällt auf, dass es doppelte Ausgaben gibt, die man mit
DISTINCT verhindern könnte. Der Grund für die doppelte
Ausgabe ist, dass jeder Eintrag der Tabelle Tier mit jedem Ein-
trag der Tabelle Tier im Kreuzprodukt kombiniert wird. D. h. es
gibt eine Zeile mit den Inhalten (2,Hase) und (2, Schaf) und eine
weitere Zeile mit den Inhalten (2,Schaf) und (2,Hase), was zur
doppelten Ausgabe führt. In diesem Fall hätte man die Doppel-
ten auch vermeiden können, indem die letzte Teilbedingung
durch T1.Gattung < T2.Gattung ersetzt werden würde.
Möchte man statt der Gehegenummer den Namen des Geheges
ausgeben, muss man die Tabelle Gehege mit in die FROM -Zeile
aufnehmen und mit den anderen Tabellen verknüpfen. Dabei
reicht Gehege.Gnr=T1.Gnr aus, da aus T1.Gnr=T2.Gnr
auch Gehege.Gnr=T2.Gnr folgt. Die Anfrage lautet:
SELECT Gehege.Gname
FROM Tier T1, Tier T2, Gehege
WHERE T1.Gnr=T2.Gnr
AND Gehege.Gnr=T1.Gnr
AND T1.Gattung < T2.Gattung
Hintergrund der
doppelten Er-
gebnisse
Das Ergebnis der Anfrage ist:
GNAME
------
Feld
Weide
Ein zweites Beispiel für die Nutzung einer lokalen Umbenen-
nung ist die Anfrage nach den Gehegenummern, die in der Ta-
belle Tier mindestens zweimal vorkommen. Wieder werden
zwei Einträge der Tabelle Tier benötigt, die sich auf das gleiche
Gehege beziehen, aber zu unterschiedlichen Tieren gehören.
Die zugehörige Anfrage lautet:
SELECT T1.Gnr
FROM Tier T1, Tier T2
WHERE T1.Gnr=T2.Gnr
AND T1.Tname < T2.Tname
Das Ergebnis der Anfrage ist:
166
Search WWH ::




Custom Search