|
Программирование >> Sql: полное руководство
которых вы ожидали. Если в фирме работают четыре менеджера, то, вероятнее всего, вы ожидали, что результаты запроса будут содержать четыре строки. Повторяющиеся строки из таблицы результатов запроса можно удалить, если в инструкции 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
Результаты запроса
TRUE
FALSE Неизвестно Рис 6.5. Отбор строк с пдмё1тю првтожвнияЛШЕВЕ Рис. 6.6 иллюстрирует роль, выполняемую условием отбора в предложении WHERE. Можно сказать, что условие отбора служит фильтром для строк таблицы. Строки, удовлетворяющие условию отбора, проходят через фильтр и становятся частью результатов запроса. Строки, не удовлетворяющие условию отбора, отфильтровываются и исключаются из результатов запроса. Таблица SALESREPS
Результаты запроса
Фильтр: MANAGER = 104 Рис. 6.6. Преапожен0шф1ЕВЕ в роли фильтра )!сповия отбора в SQL используется множество условий отбора, позволяющих эффективно и естественным образом создавать различные типы запросов. Ниже рассматриваются Пять основных условий отбора (в стандарте ANSI/ISO они называются предикатами): * Сравнение. Значение одного выражения сравнивается со значением другого выражения. Например, такое условие отбора используется для выбора всех офисов, находящихся в восточном регионе, или всех служащих, фактические объемы продаж которых превышают плановые.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |