Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / Uchpos / Gl_4.doc
Скачиваний:
29
Добавлен:
27.04.2015
Размер:
342.53 Кб
Скачать

Подчиненный запрос.

Этот тип запроса состоит из инструкции SQL SELECT, находящейся внутри другого запроса на выборку или запроса на изменение. Эти инструкции вводятся в строку "Поле" бланка запроса для определения нового поля или в строку "Условие отбора" для определения условия отбора поля. Подчиненные запросы используются для выполнения следующих действий:

-проверка в подчиненном запросе существования некоторых результатов (с помощью зарезервированных слов EXISTS или NOT EXISTS);

-поиск в главном запросе любых значений, которые равны, больше или меньше значений, возвращаемых в подчиненном запросе (с помощью зарезервированных слов ANY, IN или ALL);

-создание подчиненных запросов внутри подчиненных запросов (вложенных подчиненных запросов).

Не допускается использование инструкции SELECT подчиненного запроса в запросе на объединение или в перекрестном запросе.

Примеры:

Определить имена поставщиков, поставляющих товар с кодом 255:

SELECT Имя

FROM Поставщики

WHERE [Код поставщика] IN

(SELECT [Код поставщика]

FROM Поставки

WHERE [Код товара] = 255);

Определить наименования товаров, поставляемых поставщиками из Москвы:

SELECT Наименование

FROM Товары

WHERE [Код товара] IN

(SELECT [Код товара]

FROM Поставки

WHERE [Код поставщика] IN

(SELECT [Код поставщика]

FROM Поставщики

WHERE Адрес = "Москва"));

Определить имена поставщиков, поставляющих товар с кодом 255 (коррелированный подзапрос):

SELECT Имя

FROM Поставщики

WHERE 255 IN

(SELECT [Код товара]

FROM Поставки

WHERE [Код поставщика] = Поставки.[Код поставщика]);

Определить имена поставщиков, поставляющих хотя бы один товар, что и поставщик с кодом 135 (та же таблица в подчиненном запросе):

SELECT DISTINCT [Код поставщика]

FROM Поставки

WHERE [Код товара] IN

(SELECT [Код товара]

FROM Поставки

WHERE [Код поставщика] = 135);

Определить коды товаров, поставляемых несколькими поставщиками:

SELECT DISTINCT [Код товара]

FROM Поставки П1

WHERE [Код товара] IN

(SELECT [Код товара]

FROM Поставки

WHERE [Код поставщика] <> П1.[Код поставщика]);

Определить имена поставщиков, поставляющих товар с кодом 255:

SELECT Имя

FROM Поставщики

WHERE EXISTS

(SELECT *

FROM Поставки

WHERE [Код поставщика] = Поставщики.[Код поставщика]

AND [Код товара] = 255);

Определить имена поставщиков, поставляющих все товары:

SELECT DISTINCT Имя

FROM Поставщики

WHERE NOT EXISTS

(SELECT *

FROM Товары

WHERE NOT EXISTS

(SELECT *

FROM Поставки

WHERE [Код поставщика] = Поставщики.[Код поставщика]

AND [Код товара] = Товары. [Код товара]));

Определить коды поставщиков, поставляющих по крайней мере все товары, что и поставщик с кодом 135:

SELECT DISTINCT [Код поставщика]

FROM Поставки П1

WHERE NOT EXISTS

(SELECT *

FROM Поставки П2

WHERE [Код поставщика] = 135

AND NOT EXISTS

(SELECT *

FROM Поставки П3

WHERE П3.[Код поставщика] = П1.[Код поставщика]

AND П3.[Код товара] = П2.[Код товара]));

Определить наименование и цену товаров, которые дороже всех товаров типа 15:

SELECT Наименование, Цена

FROM Товары

WHERE Цена > ALL

(SELECT Цена

FROM Товары

WHERE Тип = 15);

Определить код, наименование и цену товаров, цена которых выше средней по их месту хранения:

SELECT [Код товара], Наименование, Цена

FROM Товары Т1

WHERE Цена >

(SELECT AVG(Цена)

FROM Товары

WHERE [Место хранения] = Т1.[Место хранения]);

Соседние файлы в папке Uchpos