Databases Reference
In-Depth Information
Anders sieht das beim all -Operator aus: Das Prädikat
jahr >all (1968, 1974, 1980, null)
ist äquivalent zu
jahr>1968 and jahr>1974 and jahr>1980 and jahr>null
Da der Vergleich mit null kein klares Ergebnis hat und somit null ist, formen
wir weiter um zu
jahr>1968 and jahr>1974 and jahr>1980 and null
Die logische Verknüpfung eines Booleschen Ausdrucks mit null ist aber immer
null (siehe etwa Abschnitt 10.2). Somit nimmt der ganze Ausdruck unabhängig
vom konkreten Wert des Attributs jahr den Wert null an und ist niemals wahr.
Und genau darum liefert die Abfrage aus Listing 14.6 keine Ergebnisse!
Dieses Szenario ist nicht das erste, bei dem es ein Problem mit null gibt, und
zunehmend verstehen wir auch die Position der null -Skeptiker.
Hinweis
Bedenken Sie immer, dass null in Ihrer Tabelle auftreten kann!
Die potenziellen null -Werte sind hier eine große Fehlerquelle. Für Vergleichs-
operatoren gibt es bis auf = keinen Grund, mit all zu arbeiten. Mit den Aggre-
gatfunktionen min und max sind wir auf der sicheren Seite.
Für Vergleiche mit = kann all schon mal ganz praktisch sein.
Listing 14.8: Reihen, deren Alben alle den gleichen Preis haben
select distinct reihe
from alben a1
where a1.preis = all (select preis
from alben a2
where a2.reihe=a1.reihe)
Zu jedem Album werden in der Unterabfrage alle Alben, die zur gleichen Reihe
gehören, ermittelt. Es wird geprüft, ob die Preise übereinstimmen. Das Ergebnis
in Tabelle 14.4 zeigt uns die Reihen, deren Alben alle den gleichen Preis haben.
Tabelle 14.4: Ergebnis der Abfrage aus Listing 14.8
reihe
Gespenster Geschichten
Franka
 
Search WWH ::




Custom Search