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

SQL позволяет использовать одни запросы внутри других запросов, то есть вкладывать запросы друг в друга. Предположим, известна фамилия студента («Петров»), но неизвестно значение поля student_id для него.

Чтобы извлечь данные обо всех оценках этого студента, можно записать следующий запрос:

SELECT *

FROMEXAM_MARKS

WHERESTUDENT_ID =

(SELECTSTUDENT_ID

FROMSTUDENT WHERESURNAME = 'Петров');

Как работает запрос SQL со связанным подзапросом?

· Выбирается строка из таблицы, имя которой указано во внешнем запросе.

· Выполняется подзапрос и полученное значение применяется для анализа этой строки в условии предложения WHEREвнешнего запроса.

· По результату оценки этого условия принимается решение о включении или не включении строки в состав выходных данных.

· Процедура повторяется для следующей строки таблицы внешнего запроса

Приведенный выше запрос корректен только в том случае, если в результате выполнения, указанного в скобках подзапроса возвращается единственное значение. Если в результате выполнения подзапроса будет возвращено несколько значений, то этот подзапрос будет ошибочным. В данном примере это произойдет, если в таблице STUDENT будет несколько записей со значениями поля SURNAME='Петров'.

В некоторых случаях для получения единственного значения в результате выполнения подзапроса используется DISTINCT. Одним из видов функций, которые всегда выдают единственное значение являются агрегирующие функции.

Оператор IN используется в подзапросах.

Подзапросы можно применять внутри предложения HAVING

Пусть требуется определить количество предметов обучения с оценкой, превышающей среднее значение оценки студента с идентификатором 301.








Дата добавления: 2015-08-26; просмотров: 849;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.