Поделиться через


Объединение условий при приоритете OR (визуальные инструменты для баз данных)

применимо к:SQL Server

Чтобы связать условия с OR и дать им приоритет над условиями, связанными с AND, необходимо повторить условие AND для каждого условия OR.

Например, представьте, что вы хотите найти всех сотрудников, которые были с компанией более пяти лет и имеют более низкие рабочие места или уходят на пенсию. Для этого запроса требуется три условия, одно условие, связанное с двумя дополнительными условиями с and:

  • Сотрудники с датой найма более пяти лет назад, и

  • Сотрудники с уровнем должности 100 или со статусом "R" (для обозначения статуса "вышел на пенсию").

В следующей процедуре показано, как создать этот тип запроса на панели условий.

Объединение условий, когда логический оператор OR имеет приоритет

  1. В панели условий добавьте столбцы данных, которые нужно искать. Если вы хотите искать один и тот же столбец, используя два или более условий, связанных с AND, необходимо добавить имя столбца данных в сетку один раз для каждого значения, которое требуется выполнить поиск.

  2. Создайте условия для связывания с оператором ИЛИ, введя одно из них в столбец фильтра сетки, а второе (и последующие) в отдельные столбцы Или.... Например, чтобы связать условия со столбцами job_lvl и status, введите = 100 в столбце Фильтр для job_lvl и = 'R' в Или... столбец для status.

    При вводе этих значений в сетке создается следующее предложение WHERE в инструкции на панели SQL:

    WHERE (job_lvl = 100) OR (status = 'R')  
    
  3. Создайте условие AND, введя его один раз для каждого условия OR. Поместите каждую запись в тот же столбец сетки, что и соответствующее условие OR. Например, чтобы добавить условие AND, которое выполняет поиск в столбце hire_date и применяется к обоим условиям OR, введите < '1/1/91' как в столбце "Критерии", так и в столбце Или... столбец.

    При вводе этих значений в сетке создается следующее предложение WHERE в инструкции на панели SQL:

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

    Совет

    Вы можете повторить условие AND, добавив его один раз, а затем с помощью команды Вырезать и вставить из меню Изменить, чтобы повторить его для других условий OR.

Предложение WHERE, созданное конструктором запросов и представлений, эквивалентно следующему предложению WHERE, которое использует скобки для указания приоритета OR над AND:

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

Заметка

Если ввести условия поиска в формате, приведенном непосредственно выше, в области SQL, а затем внести изменения в запрос на панелях "Схема" или "Критерии", конструктор запросов и представлений пересоздает инструкцию SQL, чтобы соответствовать форме, где условие AND явно распределено между обоими условиями OR.

См. также

Правила объединения условий поиска на Панели критериев (визуальные инструменты баз данных)
укажите критерии поиска (визуальные инструменты для баз данных)