русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Предложение HAVING без GROUP BY


Дата добавления: 2013-12-24; просмотров: 4661; Нарушение авторских прав


Значения NULL и условия поиска групп

Ограничения на условия поиска групп

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

· константа',

· агрегатная функция, возвращающая одно значение для всех строк, входящих в группу; I

· столбец группировки, который, по определению, имеет одно и то же значение во всех строках труппы;

· выражение, включающее в себя перечисленные выше элементы.

На практике условие поиска предложения having всегда должно включать в себя как минимум одну агрегатную функцию. Если это не так, условие поиска можно переместить в предложение where. Чтобы определить, где следует указать условие поиска — в предложении where или having, необходимо вспомнить, как применяются эти предложения:

· предложение where применяется к отдельным строкам, поэтому выражения, содержащиеся в нем, должны вычисляться для отдельных строк;

· предложение having применяется к группам строк, поэтому выражения, содержащиеся в нем, должны вычисляться для групп строк.

Как и условие поиска в предложении where, условие поиска в предложении having может дать один из следующих результатов:

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

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

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

Правила обработки значений null в условиях поиска для предложения having точно такие же, как и для предложения where



Предложение having почти всегда используется в сочетании с предложением group by, однако синтаксис оператора select не требует этого. Если предложение having используется без предложения group by, SQL рассматривает полные результаты запроса как одну группу. Другими словами, агрегатные функции, содержащиеся в предложении having, применяются к одной и только одной группе, и эта группа состоит из всех строк. На практике предложение having очень редко используется без соответствующего предложения group by.

36. ВЛОЖЕННЫЕ ЗАПРОСЫ НА ЧТЕНИЕ

В SQL существует понятие вложенный запрос, механизм вложенных запросов позволяет использовать результаты одного запроса в качестве составной части другого. Возможность применения одного запроса внутри другого и была причиной появления слова "структурированный" в названии "структурированный язык запросов". Понятие вложенного запроса не так широко известно, как понятие объединения, но оно играет важную роль SQL по трем следующим причинам:

• Оператор SQL с вложенным запросом зачастую является самым естественным способом выражения запроса, так как он лучше всего соответствует словесному описанию запроса.

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

• Существуют запросы, которые нельзя сформулировать на SQL, не прибегая к помощи вложенных запросов.

ПРИМЕНЕНИЕ ВЛОЖЕННЫХ ЗАПРОСОВ

Вложенным, или подчиненным, запросом называется запрос, содержащийся в предложении where или having другого оператора SQL. Вложенные запросы позволяют естественным образом обрабатывать запросы, выраженные через результаты других запросов. Вот пример такого запроса:

"Вывести список офисов, в которых плановый объем продаж превышает сумму плановых объемов продаж всех служащих."

В данном запросе требуется получить список офисов из таблицы of fices, для которых значение столбца target удовлетворяет некотором условию. Логично предположить, что оператор select, выражающий данный запрос, должен выглядеть примерно так, как показано ниже.

Здесь величина "???" равна сумме плановых объемов продаж всех служащих, работающих в данном офисе. Как можно задать ее в этом запросе? Сумму плановых объемов продаж для отдельного офиса (скажем, офиса с идентификатором 21) можно получить с помощью следующего запроса:

Но как результаты этого запроса вставить в предыдущий запрос вместо вопросительных знаков? По-видимому, было бы разумно вначале написать первый запрос, а затем заменить символ "???"* вторым запросом:

Фактически это и есть правильный SQL-запрос. Вложенный (внутренний) запрос вычисляет для каждого офиса сумму плановых объемов продаж всех служащих, работающих в данном офисе. Главный (внешний) запрос сравнивает план продаж офиса с полученной суммой и, в зависимости от результата сравнения либо добавляет данный офис в таблицу результатов запроса, либо нет. Совокупно главный и вложенный запросы выражают исходный запрос и извлекают из базы данных требуемую информацию.

Вложенные SQL-запросы всегда выступают в качестве части предложения where или having. В предложении where они помогают отбирать из таблицы результатов запроса отдельные строки, а в предложении having — группы строк.



<== предыдущая лекция | следующая лекция ==>
ЗНАЧЕНИЯ NULL В СТОЛБЦАХ ГРУППИРОВКИ | Добавление значений NULL


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.008 сек.