русс | укр

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

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

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

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


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

Вкладені запити


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


Результати, що повертаються оператором SELECT,можна використовувати в іншому операторі SELECT.Причому це стосується і до операторів, що повертають сукупні характеристики, і до операторів, що повертають множину значень. Наприклад, у попередньому розділі нам не вдалося створити запит, щоб довідатися прізвище наймолодшого співробітника. Тепер це можна зробити за допомогою вкладених запитів:

SELECT Fam, Year_b FROM Pers

WHERE Year_b=(SELECT max(Year_b) FROM Pers)

У цьому операторі другий вкладений оператор SELECT max(Year_b) FROM Persповертає максимальний рік народження, що використовується в елементі WHERE основного оператора SELECTдля пошуку співробітника (чи співробітників), чий рік народження збігається з максимальним.

Вкладені запити можуть звертатися до різних таблиць. Нехай, наприклад, є дві аналогічні за структурою таблиці Pers і Pers1, що стосуються до різних організацій, і треба за таблицею Pers знайти всіх однофамільців співробітників іншої організації. Щоб перевірити роботу з декількома таблицями, ви можете в текст файлу, використаного вами для створення бази даних, ввести додаткову таблицю Pers1. Якщо хочете, можна до неї внести записи, відмінні від таблиці Pers, щоб ці таблиці розрізнялися. Утім, можна все це і не робити, замінивши в наведених нижче прикладах таблицю Pers1 таблицею Pers, тобто працюючи з однією таблицею як із двома. Зміст операторів усе рівно буде зрозумілий.

Це можна зробити оператором

SELECT * FROM Pers WHERE Fam IN (SELECT Fam FROM Pers1)

Вкладений оператор SELECT Fam from Pers1повертає множину прізвищ з таблиці Pers1, а конструкція WHEREосновного оператора SELECT відбирає з прізвищ у таблиці Persті, котрі є в множині прізвищ з Pers1.

При роботі з множинами записів в умові WHERE можна використовувати ключові слова: Аll і Any. Allозначає, що умова виконується для всіх записів, a Any — хоча б для одного запису. Наприклад, оператор



SELECT Fam, Year_b FROM Pers

WHERE Year_b >=ALL (SELECT Year_b FROM Pers1)

шукає співробітників у Pers, що не доросліше будь-якого співробітника в Pers1. До речі, якщо в цьому операторі замінити Pers1 на Pers, то одержимо список наймолодших співробітників організації, що ми одержували раніше іншим способом. А оператор

SELECT Fam, Yеaг_b FROM Pers

WHERE Year_b > ANY (SELECT Year_b FROM Pers1)

шукає співробітників у Pers, що молодше хоча б одного співробітника в Pers1.В умовах, що містять вкладені оператори SELECT, може використовуватися ключове слово EXISTS, що означає добір тільки тих записів, для яких вкладений запит повертає одне чи більше значень. Наприклад, оператор

SELECT Num, Fam, Year_b FROM Pers ib1

WHERE EXISTS (SELECT Num, Year_b FROM Pers ib2

WHERE (ibl.Year_b = ib2.Year_b) and (ib1.Num != ib2.Num))

поверне список співробітників, що мають хоча б одного однолітка (псевдоніми ib1 і ib2).

В операторах, що працюють з декількома таблицями, як правило кожній таблиці дається псевдонім, що скорочує посилання на таблиці, а іноді додає їм деякий зміст, що випливає з даного застосування. Псевдонім таблиці записують в списку таблиць після слова FROM,відокремлюючи його від імені таблиці пробілом. Звичайно, ці псевдоніми діють тільки в даному операторі і не мають ніякого відношення до псевдонімів баз даних, що ми постійно використовуємо.

Існує також ключове слово SINGULAR, що означає добір тільки тих записів, для яких вкладений запит повертає тільки одне значення. Наприклад, оператор

SELECT Num, Fam, Year_b From Pers ib1 WHERE

SINGULAR(SELECT Num, Year_b FROM Pers ib2 WHERE ibl.Year_b = ib2.Year_b)

поверне список співробітників, що не мають жодного однолітка (рік народження яких збігається тільки з власним роком народження і більше не повторюється в таблиці).



<== предыдущая лекция | следующая лекция ==>
Сукупні характеристики | Об'єднання таблиць


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


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

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

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


 


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

 
 

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

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