Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше
Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике
2.2.7 Чтение данных из
нескольких таблиц с применением вложенных запросов
Все запросы,
рассмотренные ранее, считывали данные из одиночной таблицы. Бывает, однако, что
для получения требуемой информации необходимо обработать более одной таблицы.
Предположим, например, что мы хотим знать названия работ, которые были проданы
галереей дороже 20000. Названия работ хранятся в таблице WORK, а стоимости продаж — в
таблице TRANSACTION.
Если бы мы знали, что
дороже 20000 были проданы работы с номерами 505, 506 и 530, мы могли бы
получить названия этих работ с помощью следующего оператора:
SELECT Title
FROM WORK
WHERE WorkID IN (505, 506, 530);
Но в том-то и дело, что
в условии задачи номера работ нам не заданы. Ничто, однако, не мешает нам
узнать эти номера, инициировав следующий запрос:
SELECT DISTINCT WorkID
FROM TRANSACTION
WHERE AskingPrice > 20000;
Результатом
будет таблица:
505
506
530
Теперь мы можем
объединить эти два SQL-оператора
при помощи так называемого вложенного запроса (subquery):
SELECT Title
FROM WORK
WHERE WorkID IN
(SELECT DISTINCT WorkID
FROM TRANSACTION
WHERE AskingPrice > 20000);
Результатом этого
оператора будет следующее:
Mystic Fabric
Mi Vida
Northwest by
Night
И действительно, здесь
мы видим названия работ, которые были проданы галереей дороже 20000. Подобным
образом вложенность запросов может быть расширена до трех, четырех и более
уровней.