Скачать презентацию Вложенный подзапрос — это подзапрос заключенный в круглые Скачать презентацию Вложенный подзапрос — это подзапрос заключенный в круглые

Вложенные подзапросы.ppt

  • Количество слайдов: 9

Вложенный подзапрос - это подзапрос, заключенный в круглые скобки и вложенный в WHERE (HAVING) Вложенный подзапрос - это подзапрос, заключенный в круглые скобки и вложенный в WHERE (HAVING) фразу предложения SELECT или других предложений, использующих WHERE фразу. Вложенный подзапрос может содержать в своей WHERE (HAVING) фразе другой вложенный подзапрос и т. д.

Существуют простые и коррелированные вложенные подзапросы. Они включаются в WHERE (HAVING) с помощью условий Существуют простые и коррелированные вложенные подзапросы. Они включаются в WHERE (HAVING) с помощью условий IN, EXISTS или одного из условий сравнения ( =, <> , <=, >, >= ). Простые вложенные подзапросы обрабатываются системой "снизу вверх". Первым обрабатывается вложенный подзапрос самого нижнего уровня. Множество значений, полученное в результате его выполнения, используется при реализации подзапроса более высокого уровня и т. д.

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

Простые вложенные подзапросы используются для представления множества значений, исследование которых должно осуществляться в каком-либо Простые вложенные подзапросы используются для представления множества значений, исследование которых должно осуществляться в каком-либо предикате IN В подобных запросах можно использовать и другие операторы сравнения (<>, <=, <, >=, >).

Пример: Выбрать из БД имена и фамилии сотрудников, у которых код должности =1: Запрос: Пример: Выбрать из БД имена и фамилии сотрудников, у которых код должности =1: Запрос: Select имя, фамилия From физ. лица Where код лица in (select код лица From сотрудники Where код должности =1);

Подзапрос с несколькими уровнями вложенности Выбрать из БД фамилию, отчество, адрес сотрудников с зарплатой Подзапрос с несколькими уровнями вложенности Выбрать из БД фамилию, отчество, адрес сотрудников с зарплатой больше 1000. Запрос: Select фамилия, отчество, адрес Fromфиз. лица Where код физ. лица in (select код физ. лица From сотрудники Where код должности in (select код должности From должности Where зарплата > 1000));

Использование одной и той же таблицы во внешнем и вложенном подзапросе Пример: Выбрать дату Использование одной и той же таблицы во внешнем и вложенном подзапросе Пример: Выбрать дату приема на работу сотрудника, у которого код должности равен 1 или 2.

Запрос: Select distinct дата приема From сотрудники Where код сотрудника in (select код сотрудника Запрос: Select distinct дата приема From сотрудники Where код сотрудника in (select код сотрудника From сотрудники Where код должности in (1, 2);

ВАЖНО!!! Если вложенный подзапрос возвращает более одного значения и не используется оператор IN, будет ВАЖНО!!! Если вложенный подзапрос возвращает более одного значения и не используется оператор IN, будет возникать ошибка