SQL: Zeilen finden, die mehrere Bedingungen erfüllen

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Hier wird gezeigt, wie man logische Verknüpfungen in der WHERE-Klausel festlegt.

Allgemeine Lösung

Hinweis für Access-Anwender
Um die folgenden Abfragen selbst testen zu können, müssen die Tabellen der Übungsdatenbank vorhanden sein.


Will man z. B. alle Mitarbeiter aus Abteilung 10 zusammen mit den Mitarbeitern, die eine Provision erhalten, und zusammen mit den Mitarbeitern aus Abteilung 20, die maximal 2000€ verdienen, anzeigen, so kann diese Abfrage dazu verwendet werden:

SELECT *
FROM   mitarbeiter
WHERE  abt_nr = 10 OR
       provision IS NOT NULL OR
       gehalt <= 2000 AND
       abt_nr = 20

Das Resultat sollte so aussehen:

ma_nr ma_name job mgr eingestellt gehalt provision abt_nr
7369 Schmidt Sachbearbeiter 7902 17.02.1981 800 (Null) 20
7499 Allard Handelsvertreter 7698 20.02.1981 1600 300 30
7521 Wecker Handelsvertreter 7698 22.02.1981 1250 500 30
7654 Mertens Handelsvertreter 7698 28.09.1981 1250 1400 30
7782 Kühne Abteilungsleiter 7839 19.06.1981 2450 (Null) 10
7839 König Hauptgeschäftsführer (Null) 17.11.1981 5000 (Null) 10
7844 Dreher Handelsvertreter 7698 18.09.1981 1500 0 30
7876 Adam Sachbearbeiter 7788 13.07.1987 1100 (Null) 20
7934 Müller Sachbearbeiter 7782 23.01.1982 1300 (Null) 10

Im Vergleich dazu kann man mittels Klammerung ein anderes Resultat erzielen.

SELECT *
FROM   mitarbeiter
WHERE  (abt_nr = 10 OR
        provision IS NOT NULL OR
        gehalt <= 2000) AND
       abt_nr = 20

Das Resultat schaut nun so aus:

ma_nr ma_name job mgr eingestellt gehalt provision abt_nr
7369 Schmidt Sachbearbeiter 7902 17.02.1981 800 (Null) 20
7876 Adam Sachbearbeiter 7788 13.07.1987 1100 (Null) 20



Zurück zur Übersicht