|
Программирование >> Исключение дубликатов строк
:ш;:-;г:::-;.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. Этот оператор применяется, когда для включения строки в набор результата необходимо удовлетворить ряду объединенных условий. Воспользуемся
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |