Программирование >>  Руководство по sql 

1 ... 26 27 28 [ 29 ] 30 31 32 ... 105


в результате получится следующий список:

Результат: аи Iname

au fname

state

Ringer

Albert

Ringer

Anne

DeFrance

Michel

Panteley

Sylvia

Greene

Morningstar

del Castillo

Innes

Blotchet-Halls

Reginald

Smith

Meander

Порядок выполнения логических операторов. Аналогично операторам сравнения, логические операторы также выполняются в строго определенной последовательности. Если в выражении присутствуют оба типа операторов, первыми выполняются арифметические операторы. Если в выражении используется несколько логических операторов, они выполняются в следующей последовательности: сначала NOT, затем AND и наконец OR. Эта иерархия представлена на рис. 4.3.

Рассмотрим несколько примеров. Следующий запрос используется для поиска всех книг по бизнесу в таблице titles, независимо от величины затрат на них, а также книги по психологии с затратами больще $5500. Офаничение на зафаты применяется только к книгам по психологии, так как оператор AND выполняется перед оператором OR.

SQL:

select title id, type, advance from titles

where type = business or type = psychology and advance > $5500

Результат:

titles id

BU1032

BUllll

BU2075

PS2106

BU7832

PS1372

ty pe

business

business

business

psychology

business

psychology

advance

lobo

5000

10125

6000

5000

7000

Скобки

Умножение Деление

Вычитание Сложение

<

<

Поскольку логические операторы выполняются в on- р с. 4.3. Порядок выполне-ределенной последовательности, в результирующий спи- ния логических операторов сок будут включены три книги по бизнесу с расходами

меньще $5500. Другими словами, сначала будут найдены все книги по психологии с расходами больше $5500, а затем все без офаничений книги по бизнесу.

Чтобы первым выполнялся оператор OR, в запросе нужно использовать скобки. В результате выполнения следующего запроса будут найдены все книги по бизнесу и психологии с затратами выше $5500:

SQL:

select title id, type, advance



from titles

where (type = business or type = psychology) and advance > $5500

Результат:

title id type advance

BU2075 business 10125

PS2106 psychology 6000

PS1372 psychology 7000

Благодаря скобкам сначала осуществляется поиск всех книг по бизнесу и психологии, а затем из них выбираются книги с затратами больще $5500.

Ниже приводится пример запроса, в котором одновременно используются арифметические, логические и операторы сравнения. Этот запрос используется для поиска книг, затраты на которые не окупились. Другими словами, находятся все книги, доход от продажи которых (т.е. произведение ytdsales на price) меньше удвоенной суммы, выплаченной авторам. Кроме того, в нашем случае за точку отсчета берется 15 октября 1985 года, чтобы зафиксировать достаточный срок, в течение которого должен быть разойтись тираж. Это условие присоединяется к запросу с помощью оператора AND и в соответствии с правилами вычисляется после арифметических операций.

SQL:

select title id, type, price, advance, ytd sales from titles

where price * ytd sales < 2 * advance and pubdate < 10/15/85

Результат:

title id type price advance ytd sales

PS2106 psychology 7 6000 111

Диапазоны (BETWEEN и NOT BETWEEN)

Другим средством реализации условий являются диапазоны. Определить диапазон можно двумя способами:

с помощью операторов сравнения > и <;

с помощью ключевого слова BETWEEN.

Ключевое слово BETWEEN можно использовать для задания включающего диапазона (inclusive range), если в искомые значения должны включаться и границы диапазона. Например, для поиска всех книг с количеством проданных экземпляров между 4095 и 12000 (включительно) можно использовать следующий запрос:

SQL:

select title id, ytd sales from titles

where ytd sales between 4095 and 12000 Результат:

title id ytd sales

PC8888 4095

BU1032 4095



ТС7777 4095

РС1035 8780

BU7832 4095

Обратите внимание, что в результат включаются книги с 4095 проданными экземплярами. Также туда были бы включены и книги с 12000 проданными экземплярами, если бы в таблице имелись соответствующие данные. В этом смысле диапазон BETWEEN отличается от диапазона больше-меньше (><). При выполнении предыдущего запроса с использованием диапазона больше-меньше получаются другие результаты, так как при поиске не учитываются фаницы диапазона:

SQL:

select title id, ytd sales from titles

where ytd sales > 4095 and ytd sales < 12000 Результат:

title id ytd sales

PC1035 8780

При использовании консфукции NOT BETWEEN находятся все сфОКи, не входящие по своим значениям в указанный диапазон. Так, для поиска всех книг с количеством проданных экземпляров вне диапазона от 4095 до 12000 можно использовать следующий запрос:

SQL:

select title id, ytd sales from titles

where ytd sales not between 4095 and 12000

Результат:

title id

ytd sales

PS7777

зГзб

PS3333

4072

BUllll

3876

MC2222

2032

TC4203

15096

BU2075

18722

PS2091

2045

PS2106

MC3021

22246

TC3218

PS1372

Tot же результат можно получить с помошью операторов сравнения, однако обратите внимание, что в следующем запросе вместо оператора AND используется оператор OR:

SQL:

select title id, ytd sales from titles

where ytd sales < 4095 or ytd sales > 12000



1 ... 26 27 28 [ 29 ] 30 31 32 ... 105

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика