==== ИСПОЛЬЗОВАНИЕ ПОДЗАПРОСОВ С INSERT ===
INSERT - это самый простой случай.
Вы уже видели как вставлять результаты запроса в таблицу. Вы можете использовать подзапросы
внутри любого запроса,
который генерирует значения для команды INSERT тем же самым способом, которым вы делали это для
других запросов -
т.е. внутри предиката или предложения HAVING. Предположим, что мы имеем таблицу с именем
SJpeople, столбцы
которой совпадают со столбцами нашей таблицы Продавцов. Вы уже видели как за- полнять таблицу
подобно этой,
заказчиками в городе, например, в San Jose:
INSERT INTO SJpeople SELECT * FROM Salespeople WHERE city = 'San Jose';
Теперь мы можем использовать подзапрос чтобы добавить к таблице SJpeople всех продавцов которые
имеют заказчиков в
San Jose, независимо от того, находятся ли там продавцы или нет:
INSERT INTO SJpeople SELECT * FROM Salespeople
WHERE snum = ANY ( SELECT snum FROM Customers WHERE city = ' (San (Jose' );
Оба запроса в этой команде функционируют
также как если бы они не являлись частью выражения INSERT. Подзапрос находит все строки для
заказчиков в San Jose и
формирует набор значений snum. Внешний запрос выбирает строки из таблицы Salespeople, где эти
значения snum найдены. В
этом примере, строки для продавцов Rifkin и Serres, которые назначе- ны заказчикам в San Jose -
Liu и Cisneros, будут
вставлены в таблицу SJpeople.