Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Sie können Abfragen erstellen, die eine beliebige Anzahl von Suchbedingungen enthalten, die mit einer beliebigen Anzahl von AND und OR Operatoren verknüpft sind. Eine Abfrage mit einer Kombination von AND und OR Klauseln kann komplex werden, daher ist es hilfreich, zu verstehen, wie eine solche Abfrage beim Ausführen interpretiert wird und wie eine solche Abfrage im Kriterienbereich (Visual Database Tools) und SQL-Bereich (Visual Database Tools) dargestellt wird.
Hinweis
Ausführliche Informationen zu Suchbedingungen, die nur einen oder AND einen OR Operator enthalten, finden Sie unter Angeben mehrerer Suchbedingungen für eine Spalte (Visual Database Tools) und Angeben mehrerer Suchbedingungen für mehrere Spalten (Visual Database Tools)
In diesem Artikel finden Sie Informationen zu:
Die Rangfolge von
ANDundORin Abfragen, die beide enthalten.Wie sich die Bedingungen in
ANDundORKlauseln logisch miteinander verbinden.Darstellung des Abfrage- und Ansichts-Designers in den Kriterienbereichabfragen, die sowohl als auch
ANDOR.
Wenn Sie die nachstehende Diskussion verstehen möchten, stellen Sie sich vor, dass Sie mit einer employee Tabelle arbeiten, die die Spalten hire_dateenthält, job_lvlund status. In den Beispielen wird angenommen, dass Sie Informationen suchen, beispielsweise die Betriebszugehörigkeit eines Mitarbeiters (Einstellungsdatum), die Art der Tätigkeit des Mitarbeiters (Stellenbeschreibung) und den Mitarbeiterstatus (z. B. Ruhestand).
Vorrang von AND und OR
Wenn eine Abfrage ausgeführt wird, wertet sie zuerst die Klauseln aus, die mit AND, und dann mit denen verknüpft sind OR.
Hinweis
Der NOT Operator hat Vorrang vor beiden AND und OR.
Um z. B. mitarbeiter zu finden, die seit mehr als fünf Jahren im Unternehmen tätig sind, oder Mitarbeiter mit Stellen auf mittlerer Ebene ohne Beachtung des Einstellungsdatums, können Sie eine WHERE Klausel wie die folgenden erstellen:
WHERE
hire_date < '01/01/95' AND
job_lvl = 100 OR
job_lvl = 200
Um die Standardrangfolge von AND Überschreibung ORaußer Kraft zu setzen, können Sie Klammern um bestimmte Bedingungen im SQL-Bereich platzieren. Bedingungen in Klammern werden immer zuerst ausgewertet. Um z. B. alle Mitarbeiter zu finden, die mehr als fünf Jahre im Unternehmen sind, entweder in niedrigeren oder mittleren Stellen, können Sie eine WHERE Klausel wie die folgende erstellen:
WHERE
hire_date < '01/01/95' AND
(job_lvl = 100 OR job_lvl = 200)
Tipp
Es wird empfohlen, aus Gründen der Übersichtlichkeit immer Klammern beim Kombinieren AND und OR Verwenden von Klauseln einzufügen, anstatt sich auf die Standardrangfolge zu verlassen.
Funktionsweise von AND mit mehreren OR-Klauseln
Verstehen, wie AND und OR Klauseln in Verbindung stehen, wenn sie kombiniert werden, können Sie komplexe Abfragen im Abfrage- und Ansichts-Designer erstellen und verstehen.
Wenn Sie mehrere Bedingungen unter Verwendung ANDverknüpfen, gilt der erste Satz von Bedingungen, die mit allen Bedingungen im zweiten Satz verknüpft AND sind. Anders ausgedrückt wird eine bedingung, die mit AND einer anderen Bedingung verknüpft ist, an alle Bedingungen im zweiten Satz verteilt. Die folgende schematische Darstellung zeigt z. B. eine AND Bedingung, die mit einer Reihe von OR Bedingungen verknüpft ist:
A AND (B OR C)
Die obige Darstellung entspricht logisch der folgenden schematischen Darstellung, die zeigt, wie die AND Bedingung an den zweiten Satz von Bedingungen verteilt wird:
(A AND B) OR (A AND C)
Dieses Distributivprinzip beeinflusst auch die Verwendung des Abfrage- und Sicht-Designers. Stellen Sie sich beispielsweise vor, dass Sie nach allen Mitarbeitern suchen, die mehr als fünf Jahre im Unternehmen waren, entweder in niedrigeren oder mittleren Stellen. Sie geben die folgende WHERE Klausel in die Anweisung im SQL-Bereich ein:
WHERE (hire_date < '01/01/95') AND
(job_lvl = 100 OR job_lvl = 200)
Die mit AND dieser Klausel verknüpfte Klausel gilt für beide Klauseln, die mit OR. Eine explizite Möglichkeit, dies auszudrücken, besteht darin, die AND Bedingung einmal für jede Bedingung in der OR Klausel zu wiederholen. Die folgende Anweisung ist genauer (und länger) als die vorhergehende Anweisung, ist jedoch logisch equivalent:
WHERE (hire_date < '01/01/95') AND
(job_lvl = 100) OR
(hire_date < '01/01/95') AND
(job_lvl = 200)
Das Prinzip der Verteilung AND von Klauseln an verknüpfte OR Klauseln gilt unabhängig davon, wie viele einzelne Bedingungen beteiligt sind. Angenommen, Sie möchten alle Mitarbeiter suchen, die der Firma seit mehr als fünf Jahren angehören und die Tätigkeiten der mittleren oder höheren Stufe ausführen oder im Ruhestand sind. Die WHERE Klausel sieht möglicherweise wie folgt aus:
WHERE
(job_lvl = 200 OR job_lvl = 300) AND
(hire_date < '01/01/95') OR (status = 'R')
Nachdem die mit AND der Verteilung verknüpften Bedingungen verteilt wurden, sieht die WHERE Klausel wie folgt aus:
WHERE
(job_lvl = 200 AND hire_date < '01/01/95') OR
(job_lvl = 200 AND status = 'R') OR
(job_lvl = 300 AND hire_date < '01/01/95') OR
(job_lvl = 300 AND status = 'R')
Darstellung mehrerer AND- und OR-Klauseln im Kriterienbereich
Der Abfrage- und Ansichts-Designer stellt Ihre Suchbedingungen im Kriterienbereich (visuelle Datenbanktools) dar. In einigen Fällen, die mehrere Klauseln betreffen, die mit AND und denen verknüpft sind, ist ORdie Darstellung im Bereich "Kriterien" möglicherweise nicht das, was Sie erwarten. Wenn Sie Ihre Abfrage im Bereich "Kriterien" oder im Diagrammbereich (Visual Database Tools) ändern, stellen Sie möglicherweise fest, dass Ihre SQL-Anweisung von dem geändert wurde, was Sie eingegeben haben.
Im Allgemeinen legen diese Regeln fest, wie AND und OR Klauseln im Kriterienbereich angezeigt werden:
Alle bedingungen, die verknüpft sind
AND, werden in der Spalte "Filterraster " oder in derselben Spalte "Or... " angezeigt.Alle bedingungen, die verknüpft sind
OR, werden in separaten Oder... -Spalten angezeigt.Wenn das logische Ergebnis einer Kombination von
ANDundORKlauseln darin besteht, dass dieANDKlausel in mehrereORKlauseln verteilt wird, stellt der Kriterienbereich dies explizit dar, indem dieANDKlausel so oft wie nötig wiederholt wird.
Beispielsweise können Sie im SQL-Bereich eine Suchbedingung wie die folgende erstellen, in der zwei Klauseln, die mit AND einer dritten Verknüpften verknüpft sind, Vorrang haben OR:
WHERE (hire_date < '01/01/95') AND
(job_lvl = 100) OR
(status = 'R')
Der Abfrage- und Ansichts-Designer stellt diese WHERE Klausel im Kriterienbereich wie folgt dar:
Wenn die verknüpften OR Klauseln jedoch Vorrang vor einer AND Klausel haben, wird die AND Klausel für jede OR Klausel wiederholt. Dies bewirkt, dass die AND Klausel an jede OR Klausel verteilt wird. Beispielsweise können Sie im SQL-Bereich eine WHERE Klausel wie die folgende erstellen:
WHERE (hire_date < '01/01/95') AND
( (job_lvl = 100) OR
(status = 'R') )
Der Abfrage- und Ansichts-Designer stellt diese WHERE Klausel im Kriterienbereich wie folgt dar:
Wenn die verknüpften OR Klauseln nur eine Datenspalte umfassen, kann der Abfrage- und Ansichts-Designer die gesamte OR Klausel in eine einzelne Zelle des Rasters einfügen und vermeiden, dass die AND Klausel wiederholt werden muss. Beispielsweise können Sie im SQL-Bereich eine WHERE Klausel wie die folgende erstellen:
WHERE (hire_date < '01/01/95') AND
((status = 'R') OR (status = 'A'))
Der Abfrage- und Ansichts-Designer stellt diese WHERE Klausel im Kriterienbereich wie folgt dar:
Wenn Sie eine Änderung an der Abfrage vornehmen (z. B. ändern eines der Werte im Kriterienbereich), erstellt der Abfrage- und Ansichts-Designer die SQL-Anweisung im SQL-Bereich neu. Die neu erstellte SQL-Anweisung ähnelt der Anzeige des Kriterienbereichs und nicht ihrer ursprünglichen Anweisung. Wenn der Bereich "Kriterien" beispielsweise verteilte AND Klauseln enthält, wird die resultierende Anweisung im SQL-Bereich mit explizit verteilten AND Klauseln neu erstellt. Ausführliche Informationen finden Sie unter How AND works with multiple OR clauses earlier in this article.