Erste Seite Zurück Weiter Letzte Seite Übersicht Grafik

Spezielle logische Funktionen


Notizen:

EXISTS
ist eine logische Funktion (liefert also nur TRUE oder FALSE), die das nachfolgende Subselect darauf überprüft, ob es Datensätze enthält.
SELECT .... FROM Bestellung B WHERE EXISTS (SELECT * FROM Kunde K WHERE K.Ort = 'Wien' AND B.Name = K.Name)
EXISTS prüft aufVorhandensein von Daten, die Unterabfrage liefert nur TRUE oder FALSE aber keine Datensätze.
Obiges Beispiel ist eine sog. 'korrelierte' Unterabfrage, weil über die Tabelle Bestellung ein Zusammenhang mit der Hauptabfrage gebildet wird. Die Auswertung der Unterabfrage findet für jeden Wert Name der Tabelle Bestellung statt.
Tipp: korrelierte Unterabfragen sind schwer zu testen und daher eher zu vermeiden. Sie sind aber notwendig, wenn die Beziehung zwischen „außen“ und „innen“ abgefragter Tabelle über mehr als ein Feld läuft.
ALL, ANY & SOME sind spezielle Operatoren, die auf ganze Listen wirken:
<Ausdruck> > ALL (1,2,3)
bedeutet also, dass der Ausdruck größer als das Maximum der angegebenen Liste sein muss.
<Ausdruck> > ANY (1,2,3)
bedeutet , dass der Ausdruck größer als das Minimum der angegebenen Liste sein muss. SOME und ANY sind Synonyme (ISO: SOME)
Als Liste kann auch ein Subselect auftreten:
SELECT * FROM Tabelle1 WHERE Feld = ANY( SELECT Feld2 FROM Tabelle2 WHERE <Bedingung>);
Tipp: Seien Sie nicht sicher, dass Ihr DBMS any, some oder all unterstützt!