Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Оценка условия

Уничтожение дубликатов | Таблицы, формируемые подзапросом | Представления | Gt; employee.lname, department.name dept_name | Блок where | Mysql> SELECT emp_id, fname, lname, start_date, title _> FROM employee | Блоки group by и having | Mysql> SELECT open_emp_id, product_cd _> FROM account | Сортировка по возрастанию и убыванию | Mysql> SELECT cust_id, cust_type_cd, city, state, fed_id _> FROM customer |


Читайте также:
  1. I. Адаптация системы представительной демократии к японским условиям
  2. II. Попытки навязать Турции условия Антанты
  3. III. Бактериологическая оценка молока.
  4. III. ДЕЯТЕЛЬНОСТЬ ОБЩЕСТВЕННЫХ ОРГАНИЗАЦИЙ В УСЛОВИЯХ ВОЙНЫ
  5. III. Направление развития. Экономическая оценка различных видов обогрева.
  6. III. Правила обучения в соответствии с внешними условиями, временем, местом, положением и т.д.
  7. IV. Порядок и условия приема в члены казачьего общества и выхода из него. Права и обязанности членов войскового казачьего общества

 

Блок where может содержать одно или более условий, разделенных опе_ раторами and и or. При использовании только оператора and строка бу_ дет включена в результирующий набор в случае истинности (True) всех условий для нее. Рассмотрим следующий блок where:

 

WHERE title = 'Teller' AND start_date < '2003_01_01'


 

Исходя из этих двух условий, из рассмотрения будет исключен любой сотрудник, не являющийся операционистом или работающий в банке


 

Оценка условия  
   

 

начиная с 2003 года. В данном примере используется только два усло_ вия, но если условия в блоке where разделены оператором and, то неза_ висимо от их количества строка попадет в результирующий набор, только если все условия для нее будут истинны.

 

Если все условия в блоке where разделены оператором or, то чтобы стро_ ка вошла в результирующий набор, должно выполниться (принять зна_ чение true) хотя бы одно из них. Рассмотрим следующие два условия:

 

WHERE title = 'Teller' OR start_date < '2003_01_01'

 

Теперь есть несколько вариантов условий, по которым строка employee может быть включена в результирующий набор:

 

• Сотрудник является операционистом и был принят на работу до 2003 года.

• Сотрудник является операционистом и был принят на работу после 1 января 2003.

• Сотрудник не является операционистом, но был принят на работу до 2003 года.

 

В табл. 4.1 показаны возможные результаты вычисления блока where, содержащего два условия, разделенных оператором or.

 

Таблица 4.1. Результаты вычисления выражений с двумя условиями, разделенными оператором or

 

Промежуточный результат Конечный результат
       
WHERE true OR true True
WHERE true OR false True
WHERE false OR true True
WHERE false OR false False
             

 

В предыдущем примере единственный вариант исключения строки из результирующего набора – если сотрудник не является операциони_ стом и был принят на работу начиная с 1 января 2003 года.

 

Скобки

 

Если блок включает три или больше условий с использованием как оператора and, так и or, следует применять круглые скобки. Это сдела_ ет намерения запроса понятными и для сервера БД, и для всех, кто бу_ дет читать код. Вот блок where, расширяющий предыдущий пример. Он проверяет, работает ли сотрудник в банке до сих пор:

 

WHERE end_date IS NULL

AND (title = 'Teller' OR start_date < '2003_01_01')


 

Теперь имеем три условия. Чтобы строка попала в конечный результи_ рующий набор, первое условие для нее должно быть истинным (true), а также истинным должно быть второе или третье условие (или оба).


 

74 Глава 4. Фильтрация

В табл. 4.2 показаны возможные результаты вычисления этого блока where.

 

Таблица 4.2. Результаты вычисления выражений с тремя условиями, разделенными операторами and и or

 

Промежуточный результат Конечный результат
   
WHERE true AND (true OR true) True
WHERE true AND (true OR false) True
WHERE true AND (false OR true) True
WHERE true AND (false OR false) False
WHERE false AND (true OR true) False
WHERE false AND (true OR false) False
WHERE false AND (false OR true) False
WHERE false AND (false OR false) False
   

 

Как видите, чем больше условий в блоке where, тем больше комбина_ ций должен рассмотреть сервер. В данном случае конечный результат true обеспечивают только три из восьми комбинаций.

 


Дата добавления: 2015-08-17; просмотров: 38 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Сортировка с помощью числовых заместителей| Оператор not

mybiblioteka.su - 2015-2024 год. (0.006 сек.)