Новые книги

Анна Левченко – создатель Всероссийского центра мониторинга опасного и запрещенного законом РФ контента, руководитель движения «Безопасное детство», помощник уполномоченного по правам ребенка при Президенте РФ, инициатор сетевого движения «Сдай педофила!».

Интернет и социальные сети давно прочно вошли в нашу жизнь. Сегодня практически у каждого ребенка есть аккаунты в соцсетях. Но бесконтрольный доступ к интернету для несовершеннолетних может обернуться трагедией. Каждому третьему ребенку в России приходилось сталкиваться с педофилами в Сети. Как защитить ребенка от угроз и что делать, если все-таки предотвратить трагедию не удалось? Что нужно сделать в первую очередь? Куда бежать, кому жаловаться? Ответы на эти вопросы вы найдете на страницах моей книги.
В книге даются практические рекомендации по составлению наиболее распространенных видов деловых писем, включая переписку с религиозными и дипломатическими ведомствами.

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

Простые вложенные подзапросы

3.3.2. Простые вложенные подзапросы

Простые вложенные подзапросы используются для представления множества значений, исследование которых должно осуществляться в каком-либо предикате IN, что иллюстрируется в следующем примере: выдать название и статус поставщиков продукта с номером 11, т.е. помидоров.

Результат:
SELECT	Название, Статус
FROM	Поставщики
WHERE	ПС IN
	(	SELECT	ПС
		FROM	Поставки
		WHERE	ПР = 11 );
НазваниеСтатус
СЫТНЫЙрынок
УРОЖАЙкоопторг
ЛЕТОагрофирма
КОРЮШКАкооператив

Как уже отмечалось в п.3.3.1, при обработке полного запроса система выполняет прежде всего вложенный подзапрос. Этот подзапрос выдает множество номеров поставщиков, которые поставляют продукт с кодом ПР = 11, а именно множество (1, 5, 6, 8). Поэтому первоначальный запрос эквивалентен такому простому запросу:

SELECT	Название, Статус
FROM	Поставщики
WHERE	ПС IN (1, 5, 6, 8);

Подзапрос с несколькими уровнями вложенности можно проиллюстрировать на том же примере. Пусть требуется узнать не поставщиков продукта 11, как это делалось в предыдущих запросах, а поставщиков помидоров, являющихся продуктом с номером 11. Для этого можно дать запрос

SELECT	Название, Статус
FROM	Поставщики
WHERE	ПС IN
	(	SELECT	ПС
		FROM	Поставки
		WHERE	ПР IN
			(	SELECT	ПР
				FROM	Продукты
				WHERE	Продукт = 'Помидоры' ));

В данном случае результатом самого внутреннего подзапроса является только одно значение (11). Как уже было показано выше, подзапрос следующего уровня в свою очередь дает в результате множество (1, 5, 6, 8). Последний, самый внешний SELECT, вычисляет приведенный выше окончательный результат. Вообще допускается любая глубина вложенности подзапросов.

Тот же результат можно получить с помощью соединения

SELECT	Название, Статус
FROM	Поставщики, Поставки, Продукты
WHERE	Поставщики.ПС = Поставки.ПС
AND	Поставки.ПР = Продукты.ПР
AND	Продукт = 'Помидоры';

При выполнении этого компактного запроса система должна одновременно обрабатывать данные из трех таблиц, тогда как в предыдущем примере эти таблицы обрабатываются поочередно. Естественно, что для их реализации тебуются различные ресурсы памяти и времени, однако этого невозможно ощутить при работе с ограниченным объемом данных в иллюстративной базе ПАНСИОН.

3.3.1 | Содержание | 3.3.3