Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Вложенные запросы

Читайте также:
  1. Вложенные подзапросы с предикатом IN
  2. Вложенные шаблоны
  3. Запросы к базе данных
  4. ЗАПРОСЫ К БАЗЕ ДАННЫХ.
  5. Запросы на SQL
  6. Запросы с использованием одной таблицы
  7. Запросы с использованием одной таблицы
  8. Запросы с параметрами
  9. Запросы с указанием критерия отбора данных

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

Создадим вложенный запрос с целью выяснить, на каком автомобиле работал определенный водитель 25 ноября 2008 года:

 

mysql> SELECT model, reg_number FROM cars

–> WHERE id = ( SELECT car_number

–>FROM timetable

–>WHERE date = ‘2008-11-25’ AND driver_number=1);

 

 

Сначала выполняется команда SELECT внутри скобок. MyQSL получает результат вложенного запроса и использует его в условии в выражении WHERE во внешнем запросе SELECT. При этом результаты внутреннего запроса не отображаются. Конструкция запроса в приведенном примере подразумевает, что результат внутреннего запроса должен представлять собой единственное значение. В противном случае в результате выполнения этого запроса появится сообщение об ошибке: “Error 1241: Subquery returns more than 1 row”. Вложенные запросы могут содержать команды SELECT, INSERT и UPDATE, а также SET.

 

11.1. Табличные вложенные запросы

 

В случае, когда результатом вложенного запроса является не одно значение, а таблица, синтаксис запроса изменяется.

Например, определим, на каких автомобилях работали водители 25 и 30 ноября 2008:

SELECT model, reg_number

FROM cars

WHERE id IN

(

(SELECT car_number FROM timetable

WHERE use_on = ‘2008-11-25’),

(SELECT car_number FROM timetable

WHERE use_on = ‘2008-11-30’)

);

 

 

Внешний запрос выбирает модель и регистрационный номер тех автомобилей, учетные номера которых указаны в таблице timetable в записях, относящихся к 25 и 30 ноября 2008 года. Перечень условий для выражения IN пишется через запятую и помещается во внешние скобки. Сначала выполняются вложенные запросы, результаты которых формируют набор значений для выражения IN.


Дата добавления: 2014-11-13; просмотров: 21; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
Создание индексов | Привилегии в MySQL
lektsii.com - Лекции.Ком - 2014-2019 год. (0.011 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты