Читать в оригинале

<< Предыдущая Оглавление Следующая >>


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. Подобным образом вложенность запросов может быть расширена до трех, четырех и более уровней.

 



<< Предыдущая Оглавление Следующая >>