Udostępnij przez


Conventions for Combining Search Conditions in the Criteria Pane (Visual Database Tools)

Można tworzyć kwerendy, zawierające dowolną liczbę warunków wyszukiwania połączonych z dowolną liczbą AND i OR podmiotów gospodarczych.Kwerendy z połączeniem typu AND i OR klauzule może stać się złożona, więc warto zrozumieć, jak taką kwerendę jest interpretowana podczas jej wykonywania, i jak taka kwerenda jest reprezentowana w Okienko kryteriów and Okienko SQL.

Uwaga

Szczegółowe informacje na temat warunków wyszukiwania, które zawierają tylko jedną AND lub OR operator, zobacz How to: Specify Multiple Search Conditions for One Column (Visual Database Tools) i How to: Specify Multiple Search Conditions for Multiple Columns (Visual Database Tools).

Poniżej znajdują się informacje dotyczące:

  • Priorytet AND i OR w kwerendach, które zawierają zarówno.

  • W jaki sposób warunki w AND i OR klauzule logicznie odnoszą się do siebie.

  • W jaki sposób reprezentuje kwerendę i projektanta widoku w kwerendach okienka kryteria, które zawierają zarówno AND i OR.

Aby ułatwić zrozumienie poniższego omówienia, wyobraźmy sobie, że pracujesz z employee Tabela zawierająca kolumny hire_date, job_lvl, a status. W przykładach założono, trzeba wiedzieć, informacje takie, jak długo pracownik pracował w firmie (to znaczy to, co data zatrudnienia pracownika jest), typ zadanie, pracownik wykonuje (jakie poziom zadanie jest), a stan pracownika (na przykład na emeryturze).

Priorytet AND i OR

Podczas wykonywania kwerendy oblicza najpierw klauzule połączone operatorem AND, i następnie te połączone operatorem OR.

Uwaga

NOT operator ma pierwszeństwo przed obu AND i OR.

Na przykład, aby znaleźć albo pracowników, którzy pracują w firmie ponad pięć lat na dolnym-poziom zadania lub pracowników na środku-poziom zadania bez Traktuj na data ich zatrudnienia, można utworzyć klauzulę WHERE, takie jak:

WHERE 
   hire_date < '01/01/90' AND 
   job_lvl = 100 OR
   job_lvl = 200
   

Aby zastąpić domyślny priorytet AND nad OR, można w okienku SQL ująć w nawias określone warunki.Warunki w nawiasach są zawsze obliczana jako pierwsza.Na przykład aby znaleźć wszystkich pracowników, którzy pracują w firmie ponad pięć lat na niższych i wyższych, można utworzyć klauzulę WHERE, takie jak:

WHERE 
   hire_date < '01/01/90' AND 
   (job_lvl = 100 OR job_lvl = 200)

Porada

Zaleca się, że dla jasności, należy zawsze używać nawiasów podczas łączenia AND i OR klauzule zamiast korzystania z domyślnego priorytetu.

Jak działa i z wielu lub klauzul

Opis sposobu AND i OR są klauzulami połączeniu może pomóc w tworzeniu i rozumieniu złożonych kwerend w kwerendę i projektanta widoku.

Jeśli AND zostanie połączonych wiele warunków, przy użyciu, pierwszy zestaw warunków połączonych operatorem AND odnosi się do wszystkich warunków w drugim zestawie.Innymi słowy warunek połączony z i do innego stanu jest rozpowszechniany do wszystkich warunków w drugim zestawie.Na przykład następujące reprezentacja schemat przedstawia warunek AND połączony z zestaw warunków OR:

A AND (B OR C)

Powyższa reprezentacja jest z nią równoznaczna pod względem następujących reprezentacja schematyczny pokazuje, jak warunek AND jest rozpowszechniany do drugiego zestaw warunków:

(A AND B) OR (A AND C)

Użyj kwerendę i projektanta widoku podziału zasada ta ma wpływ na.Załóżmy, że szukasz dla wszystkich pracowników, którzy pracują w firmie ponad pięć lat, w dolnym lub środek-poziom zadania.Wprowadź następujące WHERE klauzula w instrukcja w okienku SQL:

WHERE (hire_date < '01/01/90' ) AND 
   (job_lvl = 100 OR job_lvl = 200)

Klauzula połączonych operatorem AND odnosi się do obu klauzul połączonych operatorem OR.Aby wyrazić to należałoby powtórzyć warunek AND dla każdego warunku w klauzula OR.Poniższa instrukcja jest bardziej wyraźne (i dłuższa) niż poprzednia, ale jest z nią równoznaczna pod względem:

WHERE    (hire_date < '01/01/90' ) AND
  (job_lvl = 100) OR 
  (hire_date < '01/01/90' ) AND 
  (job_lvl = 200)

Niezależnie od tego, ile poszczególne warunki są zaangażowane ma zastosowanie zasada rozpowszechniania klauzul AND do klauzulach połączonych operatorem OR.Załóżmy, że chcesz znaleźć wyższe lub wyższych pracowników, którzy pracują w firmie ponad pięć lat lub odeszli.Klauzula WHERE może mieć następującą postać:

WHERE 
   (job_lvl = 200 OR job_lvl = 300) AND
   (hire_date < '01/01/90' ) OR (status = 'R')

Po warunków połączonych operatorem AND zostały przekazane, klauzula WHERE będzie wyglądać w następujący sposób:

WHERE 
   (job_lvl = 200 AND hire_date < '01/01/90' ) OR
   (job_lvl = 200 AND status = 'R') OR
   (job_lvl = 300 AND hire_date < '01/01/90' ) OR
   (job_lvl = 300 AND status = 'R') 

W jaki sposób wielu AND i OR are klauzul reprezentowane w okienku kryteriów

Kwerendę i projektanta widoku reprezentuje warunki wyszukiwania w Okienko kryteriów.Jednak w niektórych przypadkach, które mogą obejmować wiele klauzul połączonych operatorem AND i OR, reprezentacja w okienku kryteriów nie muszą być oczekiwań.Ponadto, w przypadku modyfikowania kwerendy w okienku kryteriów lub Okienko Diagram, można stwierdzić, że instrukcja języka SQL zmieniła się względem instrukcji wprowadzonej przez użytkownika.

Ogólnie rzecz biorąc, zasady te określają, jak AND i OR klauzul w okienku kryteriów:

  • Wszystkich warunków połączonych operatorem AND pojawiają się w Filtr kolumna w siatce lub w tym samym Lub... kolumna.

  • Wszystkie warunki połączone operatorem OR pojawiają się w oddzielnym Lub... kolumny.

  • Jeśli logiczny wynik połączenia AND i OR klauzul jest taki, że AND zostaje rozpowszechniona do kilku klauzul OR, w okienku kryteriów jest przedstawione bezpośrednio, przez powtórzenie klauzula AND tyle razy, ile jest to konieczne.

Na przykład, w okienku SQL użytkownik może utworzyć warunek wyszukiwania, na przykład następujące polecenie, w którym dwie klauzule połączone i pierwszeństwo ponad jeden powiązany z trzeciego OR:

WHERE (hire_date < '01/01/90' ) AND 
  (job_lvl = 100) OR 
  (status = 'R')

Kwerendę i projektanta widoku reprezentuje ten WHERE klauzula w okienku kryteriów w następujący sposób:

OR clause precedence in the Criteria Pane

Jednak jeśli w klauzulach połączonych operatorem OR mają priorytet względem klauzuli AND, klauzula AND jest powtarzana dla każdej klauzuli OR.Powoduje to, że klauzula AND rozpowszechniane do każdej klauzuli OR.Na przykład w okienku SQL można utworzyć klauzulę WHERE, takie jak:

WHERE (hire_date < '01/01/90' ) AND 
  ( (job_lvl = 100) OR 
  (status = 'R') )

Kwerendę i projektanta widoku reprezentuje ten WHERE klauzula w okienku kryteriów w następujący sposób:

Multiple AND and OR clauses in the Criteria Pane

Jeśli w klauzulach połączonych operatorem OR uwzględniona jest tylko jedna kolumna danych, kwerendę i projektanta widoku można umieścić całą klauzulę OR w pojedynczej komórce siatki, dzięki czemu nie musi być powtarzany klauzula AND.Na przykład w okienku SQL można utworzyć klauzulę WHERE, takie jak:

WHERE (hire_date < '01/01/90' ) AND 
  ((status = 'R') OR (status = 'A'))

Kwerendę i projektanta widoku reprezentuje ten WHERE klauzula w okienku kryteriów w następujący sposób:

Linked OR clauses defined in the Criteria Pane

Jeżeli wprowadzisz zmiany do kwerendy (takie jak zmiana wartości w okienku kryteriów) kwerendę i projektanta widoku ponownie utworzy instrukcję SQL w okienku SQL.Wyświetlanie okienka kryteria, a nie z oryginalnej instrukcja, będzie przypominał recreated instrukcja języka SQL.Na przykład jeśli w okienku kryteriów zawarte są rozpowszechnione klauzule AND, wynikowa instrukcja w okienku SQL zostanie ponownie utworzona z rozdzielonymi klauzulami.Aby uzyskać więcej informacji zobacz „ jak i programu Works z wielu lub klauzul „ we wcześniejszej części tego tematu.