Программирование >>  Sql: полное руководство 

1 ... 28 29 30 [ 31 ] 32 33 34 ... 264


которых вы ожидали. Если в фирме работают четыре менеджера, то, вероятнее всего, вы ожидали, что результаты запроса будут содержать четыре строки.

Повторяющиеся строки из таблицы результатов запроса можно удалить, если в инструкции select Перед списком возвращаемых столбцов указать предикат distinct. Ниже приведен вариант предыдущего запроса, возвращающий те результаты, которых вы ожидали.

Вывести список идентификаторов всех менеджеров офисов.

SELECT DISTINCT MGR FROM OFFICES

106 104 105 108

Этот запрос выполняется следующим образом. Вначале генерируются все строки таблицы результатов (пять строк), а затем удаляются те из них, которые в точности повторяют другие. Предикат distinct можно указывать независимо от содержимого списка возвращаемых столбцов инструкции select (с некоторыми ограничениями для итоговых запросов, описанными в главе 8).

Если предикат distinct не указан, повторяющиеся строки не удаляются. Можно также задать предикат all, явно показывая, что повторяющиеся строки следует оставить, однако делать это не обязательно, поскольку предикат all используется по умолчанию.

Отбор строк (предложение WHERE)

SQL-запросы, извлекающие из таблицы все строки, полезны при просмотре базы данных и создании отчетов, однако редко применяются для чего-нибудь еще. Обычно требуется выбрать из таблицы несколько строк и включить в результаты запроса только их. Чтобы указать, какие строки нужно отобрать, следует воспользоваться предложением where. Ниже показано несколько запросов, в которых встречается это предложение.

Перечислить офисы, в которых фактические объемы продаж превысили плановые.

SELECT CITY, SALES, TARGET FROM OFFICES WHERE SALES > TARGET

CITY SALES TARGET

New York $575,000.00 $692,637.00

Atlanta $350,000.00 $367,911.00

Los Angeles $725,000.00 $835,915.00



Вывести имя, объемы фактических и плановых продаж служащего с идентификатором 105.

SELECT NAME, SALES, QOOTA FROM SALESREPS WHERE EMPL NOM = 105

NAME SALES QaOTA

Bill Adams $367,911.00 $350,000.00

Вывести список всех служащих, менеджером которых является Боб Смит (идентификатор 104).

SELECT NAME, SALES FROM SALESREPS WHERE MANAGER = 104

NAME SALES

Bill Adams $367,911.00

Dan Roberts $305,673.00 Paul Cruz $286,775.00

Предложение where состоит из ключевого слова where, за которым следует условие отбора, определяющее, какие именно строки требуется извлечь. В предыдущем запросе, например, условием отбора являлось выражение manager = 104. На рис. 6.5 изображено, как работает предложение where. Все строки в таблице salesreps просматриваются одна за другой, и к каждой из них применяется условие отбора. Если в условии отбора встречается имя столбца (как, например, имя manager в предыдущем примере), то используется значение этого столбца из текущей строки. Для каждой из строк условие отбора может иметь одно из трех перечисленных ниже значений.

Если условие отбора имеет значение true, строка будет включена в результаты запроса. Например, значение столбца manager в строке для Билла Адамса (Bill Adams) соответствует условию отбора, поэтому строка для него включается в результаты запроса.

Если условие отбора имеет значение false, то строка исключается из результатов запроса. Например, значение столбца manager в строке для Сью Смит (Sue Smith) не соответствует условию отбора, поэтому строка для нее исключается из результатов запроса.

Если условие отбора имеет значение null, то строка исключается из результатов запроса. Например, значение столбца manager в строке для Сэма Кларка (Sam Clark) имеет значение null, поэтому строка для него исключается из результатов запроса.



Таблица SALESREPS

NAME

MANAGER

Bill Adams

Mary Jones

Sue Smith

Sam Clark

Bob Smith

Dan Roberts

Paul Cruz

Результаты запроса


{ MANAGER

=1П4 \

{ MANAGER=

=104 -

{ MANAGER=

=104 ]

TRUE

NAME

SALES

Bill Adams Dan Roberts Paul Cruz

$367,911.00 $305,673.00 $286,775.00

FALSE

Неизвестно

Рис 6.5. Отбор строк с пдмё1тю првтожвнияЛШЕВЕ

Рис. 6.6 иллюстрирует роль, выполняемую условием отбора в предложении WHERE. Можно сказать, что условие отбора служит фильтром для строк таблицы. Строки, удовлетворяющие условию отбора, проходят через фильтр и становятся частью результатов запроса. Строки, не удовлетворяющие условию отбора, отфильтровываются и исключаются из результатов запроса.

Таблица SALESREPS

NAME

MANAGER

Bill Adams

Mary Jones

Sue Smith

Sam Clark

NULL

Bob Smith

Dan Roberts

Paul Cruz


Результаты запроса

NAME

SALES

Bill Adams Dan Roberts Paul Cruz

$367,911.00 $305,673.00 $286,775.00

Фильтр: MANAGER = 104

Рис. 6.6. Преапожен0шф1ЕВЕ в роли фильтра

)!сповия отбора

в SQL используется множество условий отбора, позволяющих эффективно и естественным образом создавать различные типы запросов. Ниже рассматриваются Пять основных условий отбора (в стандарте ANSI/ISO они называются предикатами): * Сравнение. Значение одного выражения сравнивается со значением другого выражения. Например, такое условие отбора используется для выбора всех офисов, находящихся в восточном регионе, или всех служащих, фактические объемы продаж которых превышают плановые.



1 ... 28 29 30 [ 31 ] 32 33 34 ... 264

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