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


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

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

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

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

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

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

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

Объединение условий при приоритете OR

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

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

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

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

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

    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 условиям.