Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Экзаменационный билет № 17. Подзапросы. Некоррелированные подзапросы




ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 16

ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 15

ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 14

 

Подзапросы. Некоррелированные подзапросы. Оператор ANY.

Фраза ANY.

Ключевое слово ANY, указываемое перед запросом, используется для определения того, выполняется ли сравнение по крайней мере для одного значения, возвращаемого подзапросом. Если подзапрос не возвращает ни одного значения, то условие поиска считается не выполненным.

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

Select x.номер_поставщика, x.фамилия, x.рейтинг

from S x

where x.рейтинг > any

(select y.рейтинг from S y where y.город='Париж')

Сначала выполняется независимый внутренний подзапрос, его результатом является выборка (10, 30), затем - внешний запрос, приводящий к результату, записанному ниже.

 

Подзапросы. Некоррелированные подзапросы. Оператор IN (простой подзапрос).

Фраза IN.

Выдать фамилии поставщиков, поставляющих деталь P2.

Select фамилия

from S

where номер_поставщика in

(Select номер_поставщика

from SP

where номер_детали ='P2')

Сначала выполняется внутренний подзапрос, его результатом является выборка (S1, S2, S3, S4), затем - внешний запрос, который после подстановки результатов внутреннего подзапроса имеет вид:

Select фамилия

from S

where номер_поставщика in ('S1', 'S2', 'S3', 'S4')

 

 

Подзапросы. Некоррелированные подзапросы. Оператор IN (подзапрос с несколькими уровнями вложенности).

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

Выдать фамилии поставщиков, поставляющих по крайней мере одну красную деталь.

Select фамилия

from S

where номер_поставщика in

(Select номер_поставщика

from SP

where номер_детали in

(select номер_детали

from P

where цвет='Красный'))

Сначала осуществляется самый внутренний подзапрос, дающий выборку (P1, P4, P6). После подстановки его результатов выполняется второй по вложенности подзапрос, дающий выборку (S1, S2, S4). Подстановка результатов второго выполненного подзапроса во внешний запрос приводит к окончательному результату.

 

Коррелированные подзапросы. Простой коррелированный подзапрос.

Простой коррелированный подзапрос.

Выдать фамилии поставщиков, поставляющих деталь P2.

Seleсt фамилия

from S

where 'P2' in

(Select номер_детали

from SP

where номер_поставщика= S.номер_поставщика)

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

  • выбирается первая строка из S (номер_поставщика='S1");
  • выполняется подзапрос:

(Select номер_детали

from sp

where номер_поставщика='S1')

результатом подзапроса является выборка (P1, P2, P3, P4, P5, P6);

  • завершается обработка запроса для первой строки из S, при выполнении которого проверяется условие

'P2' in ('P1', 'P2', 'P3', 'P4', 'P5', 'P6')

  • поскольку проверяемое условие - истина, результатом обработки запроса для первой строки из S является фамилия "Смит";
  • аналогично повторяется обработка для остальных строк таблицы S.



Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 358; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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