русс | укр

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

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

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

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


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

Синхронизация повторяющихся подзапросов


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


Составные запросы с несколькими подзапросами.

Подзапросы, возвращающие значения из нескольких столбцов.

Пример. Необходимо узнать фамилии сотрудников, должность и оклад которых совпадают с данными сотрудника Данина:

SELECT DISTINCT Оклад, Должность, Фамилия

FROM Сотрудники

WHERE (Должность, Оклад) = (SELECT Должность, Оклад

FROM Сотрудники WHERE Фамилия = ‘Данин’)

 

Пример. Составить список сотрудников, должность которых совпадает с должностью сотрудника Реброва или получающих столько же или более чем сотрудник Данин:

SELECT Оклад, Должность, Фамилия

FROM Сотрудники

WHERE Должность = ANY(SELECT Должность

FROM Сотрудники WHERE Фамилия = ‘Ребров’

OR Оклад >= ALL (SELECT Должность

FROM Сотрудники WHERE Фамилия = ‘Данин’)

ORDER BY Должность, Оклад

Пример. Найти фамилию и занимаемую должность всех сотрудников отдела 10, должность которых совпадает с должностью какого-либо сотрудника отдела торговли:

SELECT Должность, Фамилия

FROM Сотрудники

WHERE Должность IN (SELECT Должность

FROM Отелы, Сотрудники

WHERE Назв_отдела = ‘Торговля’ and

Сотрудники.Отдел = Отделы.Отдел)

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

 

Select Отдел, Фамилия, Оклад

From Сотрудники S

Where Оклад > (Select AVG (оклад)

From Сотрудники

Where отдел = S.отдел)

 

В данном случае, для каждой строки первый запрос будет вложенным.

Такой механизм называется синхронизацией повторяющегося подзапроса. Псевдоним таблицы, определенный в основном запросе и встречающийся во вложенном подзапросе, сообщает СУБД о необходимости синхронизации подзапроса с основным запросом.

Последовательность действий СУБД при обработке вложенного подзапроса с синхронизацией:



В основном запросе извлекается очередная строка.

Номер отдела из этой строки передается во вложенный подзапрос и используется вместо S.отдел.

Выполняется вложенный подзапрос, который вычисляет среднюю зарплату для заданного отдела.

Средний оклад передается в основной запрос и используется в предложении Where.

Пример использования подзапросов с условием соединения.

Найти данные о сотрудниках, работающих в Твери, должность которых такая же, как у Евдокимова:

Select Фамилия, Оклад, Должность, Город

From Сотрудники, Отделы

Where Город = «Тверь» AND

Сотрудники.отдел = Отделы.отдел AND

Должность = ANY (Select Должность

From Сотрудники

Where Фамилия = “Евдокимов”)

ORDER BY Фамилия



<== предыдущая лекция | следующая лекция ==>
Подзапросы, возвращающие набор значений. | Индексы


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


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

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

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


 


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

 
 

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

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