Бөлісу құралы:


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

Область применения: SQL Server

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

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

  • служащие, принятые на работу ранее, чем пять лет назад;

  • служащие, у которых уровень должности равен 100 или состояние имеет значение равен «R» (для покинувших компанию).

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

Соединение условий, с приоритетом оператора OR

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

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

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

    WHERE (job_lvl = 100) OR (status = 'R')  
    
  3. Создайте условие, связанное оператором AND, добавив его один раз для каждого условия, связанного оператором OR. Поместите условие AND в тот же самый столбец сетки, в котором находится соответствующее условие 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.

См. также

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