Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
языки БД.doc
Скачиваний:
4
Добавлен:
26.11.2018
Размер:
153.6 Кб
Скачать

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

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

1. Вывести список товаров, имеющих цену меньше средней.

SELECT Nkod, Cnaim, Nsort FROM Tovary

WHERE Nzena < (SELECT AVG(Nzena) FROM Tovary);

Вложенный запрос это оператор SELECT заключенный в скобки. Вложенные SQL-запросы являются частью предложения WHERE или HAVING.

Ограничения на SELECT во вложенном запросе:

  • Таблица результатов вложенного запроса всегда состоит из одного столбца.

  • Во вложенный запрос не может входить предложение ORDER BY

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

Подзапросы со следующими условиями поиска:

  1. Сравнением с результатом вложенного запроса. Сравнивается (6операций сравнения) значение выражения с одним значением, возвращенным вложенным запросом. (см. 1)

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

Пример: выбираем товары, купленные за наличный расчет

SELECT Cnaim FROM Tovary

WHERE Nkod IN (SELECT Nkod FROM Pokup

WHERE Cvid LIKE 'наличный');

  1. Проверка на существование проверяет наличие строк в таблице результатов вложенного запроса.

EXISTS означает примерно "если подмножество не пусто", соотвественно NOT EXISTS означает "если подмножество пусто". Условие поиска EXISTS не использует результаты вложенного расчета, а проверяет только наличие результатов.

SELECT * FROM Tovary

WHERE exists (SELECT * FROM Pokup

WHERE Tovary.nkod=Pokup.nkod and ntov<>0);

15