Программирование >>  Исключение дубликатов строк 

1 ... 49 50 51 [ 52 ] 53 54 55 ... 152



:ш;:-;г:::-;.1:,-,

t-NOT



Тиаи$ированна0 выражение

ПринОАлежиост!

Типигироваиное выражение

СовпоАдние с оброзцом

1-,-:-Л .fST

MlV t*ffMM!M M* M<PMI

p* IN -x Типизированное выражение

Типизированное выражение

lnot


строкообразец

MM Ж-

MM iIiMmMMMMiMM WiijIMmmmm*M

Я

строковый литероА

Null

Г >

ТипизированиоФ шыраж0ни0

NOT J

NULL.

Рис. 6.7. Синтаксическая структура оператора NOT

Иногда необходимо выполнить некоторую дедуктивную работу, чтобы преобразовать фразу правильно. Некоторые фразы, например третья из приведенных выше, не содержат явного указания на необходимость применения оператора NOT. В данном случае требование подразумевается, поскольку нужно исключить всех, у кого нет номера факса. При работе с запросами, которые содержат фразы такого типа, необходимо более тщательно анализировать их и, возможно, переделать, чтобы определить, нужно ли исключать определенные строки из набора результатов. К сожалению, для этого нет легкого практичного способа, но, если проявить немного настойчивости и поупражняться, станет легче определять, требуется ли для конкретного запроса оператор NOT.

Как только установлено, что требуется ли исключить какую-либо информацию из набора результатов, можно перейти к процессу преобразования.



Show те а list of all the orders weve taken, except for those posted in July . ( Показать список всех принятых заказов, за исключением принятых в июле .)

Преобразование: Select order ID and order date from the orders table

where the order date does not fall between July 1, 1999, and July 31, 1999

(Выбрать идентификатор и дату заказа из таблицы Заказы , для которых дата заказа не попадает ме>{од 1 июля 1999 и 31 июля 1999)

Select order ID алё order date from the orders table where the order date does not fett between July 1, 1090, Ч999-07-0Г and July 31, 1000 Ч999-07-ЗГ (Выбрать идентификатор и дату заказа из Заказы , где дата заказа не находится между *1999-07-0Г и 1999-07-ЗГ)

SELECT OrderlD, OrderDate FROM Orders

WHERE OrderDate NOT BETIVEEN M999-07-01 AND 1999-07-31

Уточнение:

Этот оператор SELECT выдает набор результатов, который не содержит заказов, зарегистрированных между 1 и 31 июля 1999 г. Однако в нем будут содержаться все другие заказы из таблицы Orders (включая, возможно, строки с 1998 или 2000 г.). Используя несколько условий, можно в дальнейшем ограничить строки, передаваемые в набор результатов, только теми заказами, которые были приняты в 1999 г. Посмотрим, как обрабатывается следуюш,ий запрос:

7 need the identification numbers of all faculty members

who are not professors or associate professors .

( Мне нужны идентификационные номера всех преподавателей,

которые не являются профессорами или адьюнкт-профессорами .)

Преобразование: Select staff ID and title from the faculty table where

the title is not professor or associate professor (Выбрать идентификатор и должность сотрудников из таблицы Преподавательский состав, у которых

Уточнение:

должность не профессор или адьюнкт-профессор)

Select staff ID шё title from the faculty table where the title ts not in (professor of associate professor) (Выбрать идентификатор, должность сотрудника из Преподавательский состав , где должность не (профессор, *адьюнкт-профессор))



SQL SELECT StaffID, Title

FROM Faculty WHERE Title

NOT IN (Professor, Associate Professor)

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

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

Использование нескольких условий

Ответ на сложный запрос можно получить, используя несколько условий. Рассмотрим пример:

Glue те the first and last names of customers who live in Seattle and whose last name starts with the letter H . ( Предоставить имена и фамилии клиентов, проо/сивающих в Сиэтле, у которых фамилия начинается с буквы Н .)

Для ответа на этот запрос требуются условие сравнения на равенство и условие совпадения с образцом. Как же объединить эти два необходимые условия в одно условие поиска? Ответ лежит в способе, которым в стандарте SQL определяется синтаксис для условия поиска (см. рис. 6.8).

Знакомство с AND и Oft

Два или более условий можно объединить, используя операторы AND и OR,








4- !

Рис. 6.8. Синтаксическая

диаграмма для условия поиска

а полный набор условий, объединенных

для ответа на данный запрос, составляет единое условие поиска. Как показано на диаграмме, можно также объединить некоторое составное условие поиска с другими условиями, заключив это составное условие в скобки. Все это позволяет создавать очень сложные условия WHERE, которые точно регулируют, какие выбранные строки должны включаться в набор результатов.

Использование RND

Первый способ объединения двух или более условий состоит в использовании оператора AND. Этот оператор применяется, когда для включения строки в набор результата необходимо удовлетворить ряду объединенных условий. Воспользуемся



1 ... 49 50 51 [ 52 ] 53 54 55 ... 152

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