Databases Reference
In-Depth Information
Das hätten wir in diesem Fall auch einfacher haben können:
Listing 14.9: Eine einfache Abfrage, die eine geschachtelte ersetzt.
select reihe
from alben
group by reihe
having count(distinct preis)=1
14.3.2 any
Wir können any in Verbindung mit dem = -Operator nutzen. Das Prädikat
jahr = any (1968,1972,1980,null)
ist gleichwertig mit
jahr=1968 or jahr=1972 or jahr=1980 or jahr=null
Der Ausdruck liefert genau dann true , wenn jahr gleich einem der Werte 1968,
1972 oder 1980 ist. Der Vergleich mit null ergibt zwar null , doch bleibt null
bei or -Verknüpfungen wirkungslos (siehe Abschnitt 10.2). An dieser Stelle macht
null ausnahmsweise keine Probleme.
Am folgenden Beispiel
jahr in (1968,1972,1980,null)
sehen wir, dass =any auch nichts wirklich Neues, sondern das Gleiche wie in ist.
Man überzeugt sich aber schnell davon, dass die beiden Prädikate
jahr not in (1968,1972,1980,null)
und
jahr !=any (1968,1972,1980,null)
nicht das gleiche Ergebnis haben:
Für jahr=1968 ist das erste Prädikat beispielsweise falsch, das zweite aber nicht,
da etwa 1968!=1972 gilt. Bei genauerer Betrachtung ist das zweite Prädikat für
jeden Wert von jahr wahr. Falsch kann es nur werden, wenn die rechte Seite aus
einer einelementigen Menge besteht.
Auch wenn man auf den ersten Blick not in und !=any für äquivalent hält,
zeigt dieses Beispiel, dass dies nicht der Fall ist.
Search WWH ::




Custom Search