Udostępnij za pomocą


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

Dotyczy:programu SQL Server

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

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 za pomocą polecenia 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.

Łączenie warunków, gdy or ma pierwszeństwo

  1. W okienku Kryteria (Visual Database Tools) 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 usługą AND, musisz dodać nazwę kolumny danych do siatki raz dla każdej wartości, którą chcesz wyszukać.

  2. Utwórz warunki, z którymi mają być połączone OR , wprowadzając pierwszy z nich w kolumnie siatki Filtr , a drugi (i kolejne) na oddzielne kolumny Or... . Aby na przykład połączyć warunki z OR wyszukiwaniem job_lvl kolumn istatus, wprowadź = 100 ciąg w kolumnie Filter dla job_lvl i = 'R' w kolumnie Or... dla .status

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

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

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

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

    Wskazówka

    Warunek można powtórzyć AND , dodając go raz, a następnie używając poleceń Wycinanie i wklejanie z menu Edycja , aby powtórzyć go dla innych OR warunków.

Klauzula utworzona WHERE przez projektanta zapytań i widoków jest równoważna następującej WHERE klauzuli, która używa nawiasów do określenia pierwszeństwa OR względem ANDelementu :

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 (narzędzia visual database tools), ale następnie wprowadzisz zmianę w zapytaniu w okienkach Diagram lub Kryteria, Projektant zapytań i widoków ponownie utworzy instrukcję SQL, aby dopasować formularz do AND warunku jawnie dystrybuowanego do obu OR warunków.