ВУЗ:
Составители:
Рубрика:
75
2. Подзапрос с несколькими уровнями вложенности
Пусть требуется узнать не поставщиков продукта 9, как это делалось в предыдущем запросе, а
поставщиков моркови
SELECT Поставщик, Телефон
FROM Поставщики
WHERE КодПост IN
(SELECT КодПост
FROM Поставки
WHERE КодПрод IN
(SELECT КодПрод
FROM Продукты
WHERE Продукт = 'Морковь'));
В данном случае результатом самого внутреннего подзапроса является только одно значение
(9). Как уже было показано выше, подзапрос следующего уровня в свою очередь дает в результате
множество (1, 2, 3). Последний, самый внешний SELECT, вычисляет приведенный выше
окончательный результат. Вообще допускается любая глубина вложенности подзапросов.
SQL позволяет одни и те же запросы формулировать несколькими способами.
Тот же результат можно получить с помощью следующего запроса:
SELECT Поставщик, Телефон
FROM Поставщики, Поставки, Продукты
WHERE Поставщики.КодПост = Поставки.КодПост
AND Поставки.КодПрод = Продукты.КодПрод
AND Продукт = 'Морковь';
При выполнении этого компактного запроса система должна одновременно обрабатывать
данные из трех таблиц, тогда как в предыдущем примере эти таблицы обрабатываются поочередно.
Естественно, что для их реализации требуются различные ресурсы памяти и времени, однако этого
невозможно ощутить при работе с ограниченным объемом данных в иллюстративной БД «Магазин».
3. Пересечение двух таблиц
Найти продукты, которые есть и в таблице Продукты, и в таблице НовыеПродукты
SELECT Продукт
FROM Продукты
WHERE Продукт IN
(SELECT Продукт
FROM НовыеПродукты);
Или
SELECT Продукты.Продукт
FROM Продукты, НовыеПродукты
WHERE Продукты.Продукт = НовыеПродукты.Продукт;
4. Разность двух таблиц
Найти продукты, которые есть в таблице Продукты, но отсутствуют в таблице НовыеПродукты
SELECT Продукт
FROM Продукты
WHERE Продукт NOT IN
(SELECT Продукт
FROM НовыеПродукты);
Вложенный подзапрос с оператором сравнения, отличным от IN
Выдать продукты, имеющие ту же единицу измерения, что и молоко.
SELECT Продукт
FROM Продукты
WHERE ЕдИзм =
(SELECT ЕдИзм
FROM Продукты
WHERE Продукт = 'Молоко');
2. Подзапрос с несколькими уровнями вложенности Пусть требуется узнать не поставщиков продукта 9, как это делалось в предыдущем запросе, а поставщиков моркови SELECT Поставщик, Телефон FROM Поставщики WHERE КодПост IN (SELECT КодПост FROM Поставки WHERE КодПрод IN (SELECT КодПрод FROM Продукты WHERE Продукт = 'Морковь')); В данном случае результатом самого внутреннего подзапроса является только одно значение (9). Как уже было показано выше, подзапрос следующего уровня в свою очередь дает в результате множество (1, 2, 3). Последний, самый внешний SELECT, вычисляет приведенный выше окончательный результат. Вообще допускается любая глубина вложенности подзапросов. SQL позволяет одни и те же запросы формулировать несколькими способами. Тот же результат можно получить с помощью следующего запроса: SELECT Поставщик, Телефон FROM Поставщики, Поставки, Продукты WHERE Поставщики.КодПост = Поставки.КодПост AND Поставки.КодПрод = Продукты.КодПрод AND Продукт = 'Морковь'; При выполнении этого компактного запроса система должна одновременно обрабатывать данные из трех таблиц, тогда как в предыдущем примере эти таблицы обрабатываются поочередно. Естественно, что для их реализации требуются различные ресурсы памяти и времени, однако этого невозможно ощутить при работе с ограниченным объемом данных в иллюстративной БД «Магазин». 3. Пересечение двух таблиц Найти продукты, которые есть и в таблице Продукты, и в таблице НовыеПродукты SELECT Продукт FROM Продукты WHERE Продукт IN (SELECT Продукт FROM НовыеПродукты); Или SELECT Продукты.Продукт FROM Продукты, НовыеПродукты WHERE Продукты.Продукт = НовыеПродукты.Продукт; 4. Разность двух таблиц Найти продукты, которые есть в таблице Продукты, но отсутствуют в таблице НовыеПродукты SELECT Продукт FROM Продукты WHERE Продукт NOT IN (SELECT Продукт FROM НовыеПродукты); Вложенный подзапрос с оператором сравнения, отличным от IN Выдать продукты, имеющие ту же единицу измерения, что и молоко. SELECT Продукт FROM Продукты WHERE ЕдИзм = (SELECT ЕдИзм FROM Продукты WHERE Продукт = 'Молоко'); 75
Страницы
- « первая
- ‹ предыдущая
- …
- 72
- 73
- 74
- 75
- 76
- …
- следующая ›
- последняя »