русс | укр

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

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

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

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


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

Вложенные запросы в условиях отбора (WHERE и HAVING)


Дата добавления: 2015-07-09; просмотров: 553; Нарушение авторских прав


Эти запросы по своей логике ничем не отличаются от запросов, приведенных выше, поэтому просто приведем примеры.

Пусть требуется вывести фамилии самых молодых студентов (т.е. тех, у которых самая поздняя дата рождения). Этот запрос состоит из двух этапов: сначала нужно найти самую позднюю дату рождения (эту задачу решит вложенный запрос), а затем всех студентов, которые имеют найденную дату рождения.

SELECT name_st FROM students WHERE born=

(SELECT MAX(born) FROM students)

Здесь знак равенства в условии WHERE уместен, поскольку вложенный запрос гарантированно возвратит одно непустое значение, если в таблице students имеется хотя бы одна строка (на пустой таблице этот запрос также корректно работает, возвращая сообщение «строки не выбраны»).

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

Пусть требуется найти студентов, которые имеют максимальный (или минимальный) средний балл. Запрос, который находит максимальный средний балл студента, приводился выше, осталось только продолжить логику рассуждений. Зная максимальный средний балл, по таблице оценок можно найти коды студентов, имеющих такой средний балл (здесь потребуется использование фразы HAVING), а по кодам студентов в самом внешнем запросе можно отыскать в таблице студентов их фамилии.

В результате получили «многоэтажный», но довольно простой по логике, запрос:

SELECT name_st FROM students WHERE cod_st IN

(SELECT cod_st FROM marks GROUP BY cod_st HAVING AVG(mark)=

(Select MAX(avg_mark) max_avg_mark from

(select avg (mark) avg_mark from marks group by cod_st

)

)

)



<== предыдущая лекция | следующая лекция ==>
Вложенные запросы как альтернатива соединению таблиц в запросах | Использование ключевых слов ALL и ANY с вложенными запросами


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


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

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

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


 


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

 
 

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

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