русс | укр

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

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

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

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


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

Группировка записей


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


Пусть необходимо определить первичные ключи, соответствующие каталогам id_catalog, в которых есть хоть одна товарная позиция. Для этого достаточно осуществить запрос к таблице products, который извлечет поле id catalog (листинг 7.28).

Как видно из листинга 7.28, результат не совсем удобен для восприятия. Было бы лучше, если бы запрос вернул уникальные значения столбца id_catalog. Для этого перед именем столбца можно использовать ключевое слово distinct, которое предписывает MySQL извлекать только уникальные значения.

Как показано в листинге 7.29, результат запроса не содержит ни одного повторяющегося значения. Использование ключевого слова distinct допускается совместно с функцией count(). В листинге 7.30 первый запрос возвращает общее число записей в таблице products, а второй — число уникальных значений id_catalog.

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

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

 

 

Однако, в отличие от ключевого слова distinct, использование функции count () совместно с group by приводит не к подсчету уникальных значений id_catalog, а квыводу числа записей, соответствующих каждому из уникальных значений id_cataiog.

Как видно из листинга 7.32, каталог с первичным ключом id_catalog = 1 содержит 9 товарных позиций, с id_catalog = 2 — 6 и т. д.

При использовании конструкции group by точно так же возможно использование условия where.

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



 

Для решения этой проблемы вместо ключевого слова where используется ключевое слово having, которое располагается вслед за конструкцией group by.

В условии having можно использовать все столбцы результирующей таблицы, не только вычисляемые, например, в листинге 7.36 приводится пример запроса, извлекающего уникальные значения столбца id_catalog, больше двух

 

Отличие запросов, представленных в листингах 7.33 и 7.36, заключается в том, чтов случае использования ключевого слова where сначала производится выборка из таблицы с применением условия и лишь затем группировка результата, а в случае использования ключевого слова having сначала происходит группировка таблицы и лишь затем выборка с применением условия.

Допускается использование условия having без группировки group by.

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

 



<== предыдущая лекция | следующая лекция ==>
Использование функций | Сохранение результатов во внешний файл


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


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

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

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


 


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

 
 

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

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