Komplexere Fallunterscheidungen

Fallunterscheidungen können durch die AND Klausel zusammengefügt werden und wird einen Datenbankeintrag selektieren wenn dieser allen Bedingungen gerecht wird. Um z.B. alle Angestellten in der Position 'Angestellter' und mit einem Gehalt von über 40000 anzuzeigen, wird folgendes Kommando benutzt:


\begin{code}
SELECT AngestelltenID
FROM AngestelltenStatistik
WHERE Gehalt \textgreater{} 40000 AND POSITION = 'Angestellter;
\end{code}

Gleichermaßen läßt sich die OR Klausel benutzen um eine Bedingung aufzubauen bei der es ausreicht daß eine der Bedingungen erfüllt wird. Nützlich zum Beipiel um alle Fälle aufzuzeigen die weniger als 10000 erwirtschafteno der mehr als 40000 verdienen :


\begin{code}
SELECT AngestelltenID
FROM AngestelltenStatistik
WHERE Gewinn \textless{}10000 OR Gehalt\textless{}40000;
\end{code}

Und und Oder können miteinander verbunden werden um immer kompliziertere Bedingungen zu erzeugen:


\begin{code}
SELECT AngestelltenID
FROM AngestelltenStatistik
WHERE POSITION ...
...ger' AND Gehalt \textgreater{} 60000 OR Gewinn \textgreater{} 12000;
\end{code}

Die Bedingungen werden in der Reihenfolge AND-OR abgearbeitet, demnach werden zuerst die Datensätze ausgewählt welche in der Spalte POSITION 'Manager' verzeichnen und deren Gehalt größer als 60000 verzeichnen, diese Liste wird mit der vorhergehenden verglichen, getestet wird ob der Gewinn größer als 12000 ist oder der Datensatz in der vorher ermittelten Liste vorhanden ist.

Verallgemeinert heißt dies das alle AND Verknüpfungen zuerst ermittelt werden, um anschließend mit der OR Verknüpfung ausgesucht zu werden.

Um das ganze etwas klarer darzustellen nehmen wir folgenden Fall an:

True AND False OR True AND True OR False AND False

Die und-Paare werden zusammengeführt:

False OR True OR False

Und jetzt die OR-paare von links nach rechts

True OR False True

Das Resultat is wahr, und dieser Datensatz würde selektiert werden. der vollständigkeit halber sollte sichergestellt sein auch die NOT-Sektion zu lesen, und die Reihenfolge logischer Operationen.

Um sicherzustellen, daß das gewünschte Verhalten eintritt, können die verschiedenen Bedingungen durch Klammern getrennt werden.


\begin{code}
SELECT AngestelltenID
FROM AngestelltenStatistik
WHERE POSITION ...
...r' AND (Gehalt \textgreater{} 50000 OR Gewinn \textgreater{} 10000);
\end{code}