Основы SQL


КАК РАБОТАЕТ СООТНЕСЕННЫЙ ПОДЗАПРОС?


В вышеупомянутом примере, "внутренний" (inner) и "внешний" (outer) это псевдонимы, подробно обсуждённые в . Мы выбрали эти имена для большей ясности; они отсылают к значениям внутренних и внешних запросов, соответственно. Так как значение в поле cnum внешнего запроса меняется, внутренний запрос должен выполняться отдельно для каждой строки внешнего запроса. Строка внешнего запроса, для которого внутренний запрос каждый раз будет выполнен, называется текущей строкой-кандидатом.

=============== SQL Execution Log ============ | | | SELECT * | | FROM Customers outer | | WHERE 10/03/1990 IN | | (SELECT odate | | FROM Orders inner | | WHERE outer.cnum = inner.cnum); | | ============================================= | | cnum cname city rating snum | | ----- -------- ---- ------ ----- | | 2001 Hoffman London 100 1001 | | 2003 Liu San Jose 200 1002 | | 2008 Cisneros San Jose 300 1007 | | 2007 Pereira Rome 100 1004 | =============================================

Рисунок 11.1 Использование соотнесённого подзапроса

Следовательно, процедура оценки, выполняемой соотнесённым подзапросом:

  1. Выбрать строку из таблицы, именованной во внешнем запросе. Это будет текущая строка-кандидат.
  2. Сохранить значения из этой строки-кандидата в псевдониме с именем в предложении FROM внешнего запроса.
  3. Выполнить подзапрос. Везде, где псевдоним, заданный для внешнего запроса, найден (в данном случае "внешний"), использовать значение текущей строки-кандидата. Использование значения из строки-кандидата внешнего запроса в подзапросе называется внешней ссылкой.
  4. Оценить предикат внешнего запроса на основе результатов подзапроса, выполняемого в шаге 3. Он определяет, выбирается ли строка-кандидат для вывода.
  5. Повторить процедуру для следующей строки-кандидата таблицы, и так далее, пока все строки таблицы не будут проверены.

В вышеупомянутом примере SQL осуществляет следующую процедуру:

  1. Выбирает строку Hoffman из таблицы Заказчиков.
  2. Сохраняет эту строку как текущую строку-кандидат под псевдонимом "внешний".



  3. Начало  Назад  Вперед



    Книжный магазин