Udostępnij za pośrednictwem


Łączenie warunków, gdy operacja LUB ma pierwszeństwo (Visual Database Tools)

Dotyczy:programu SQL Server

Aby połączyć warunki z elementem OR i podać im pierwszeństwo przed warunkami połączonymi z elementem AND, należy powtórzyć warunek AND dla każdego warunku OR.

Załóżmy na przykład, że chcesz znaleźć wszystkich pracowników, którzy byli z firmą ponad pięć lat i mają niższe miejsca pracy lub są na emeryturze. To zapytanie wymaga trzech warunków— jednego warunku połączonego z dwoma dodatkowymi warunkami z elementem AND:

  • Pracownicy z datą zatrudnienia wcześniej niż pięć lat temu i

  • Pracownicy z poziomem pracy 100 lub których stan to "R" (dla emerytowanych).

Poniższa procedura ilustruje sposób tworzenia tego typu zapytania w okienku Kryteria.

Aby połączyć warunki, gdy or ma pierwszeństwo

  1. W okienku kryteria dodaj kolumny danych, które chcesz wyszukać. Jeśli chcesz wyszukać tę samą kolumnę przy użyciu co najmniej dwóch warunków połączonych z elementem AND, musisz dodać nazwę kolumny danych do siatki raz dla każdej wartości, którą chcesz wyszukać.

  2. Utwórz warunki, które mają być połączone za pomocą LUB, wprowadzając pierwszy z nich do kolumny siatki Filtr, a drugi (i kolejne) do oddzielnych kolumn Lub.... Aby na przykład połączyć warunki operatorem LUB przy przeszukiwaniu kolumn job_lvl i status, wprowadź = 100 w kolumnie filtru dla job_lvl i = 'R' w kolumnie Lub... kolumnie dla status.

    Wprowadzenie tych wartości w siatce powoduje utworzenie następującej klauzuli WHERE w instrukcji w okienku SQL:

    WHERE (job_lvl = 100) OR (status = 'R')  
    
  3. Utwórz warunek AND, wprowadzając go raz dla każdego warunku OR. Umieść każdy wpis w tej samej kolumnie siatki co warunek OR odpowiadający. Aby na przykład dodać warunek AND, który wyszukuje kolumnę hire_date i ma zastosowanie do obu warunków OR, wprowadź < '1/1/91' w kolumnie Kryteria i Or... kolumnie.

    Wprowadzenie tych wartości w siatce powoduje utworzenie następującej klauzuli WHERE w instrukcji w okienku SQL:

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

    Napiwek

    Warunek I można powtórzyć, dodając go raz, a następnie używając poleceń Wytnij i Wklej z menu Edytuj, aby zastosować go ponownie dla innych warunków LUB.

Klauzula WHERE utworzona przez projektanta zapytań i widoków jest równoważna następującej klauzuli WHERE, która używa nawiasów w celu określenia pierwszeństwa instrukcji OR dla elementu AND:

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

Notatka

Jeśli wprowadzisz warunki wyszukiwania w formacie widocznym bezpośrednio powyżej w okienku SQL, ale następnie wprowadzisz zmianę w zapytaniu w okienku Diagram lub Kryteria, Projektant zapytań i widoków ponownie utworzy instrukcję SQL, aby dopasować formularz do warunku AND jawnie dystrybuowane do obu warunków OR.

Zobacz też

Konwencje łączenia warunków wyszukiwania w okienku kryteriów (Narzędzia Visual Database Tools)
Określanie Kryteriów Wyszukiwania (Visual Database Tools)