Меню

Вложенные таблицы sql пример



MySQL. Вложеные запросы. JOIN LEFT/RIGHT.

В SQL подзапросы — или внутренние запросы, или вложенные запросы — это запрос внутри другого запроса SQL, который вложен в условие WHERE.

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

SQL подзапрос — это запрос, вложенный в другой запрос.

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

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

  • Подзапросы должны быть заключены в круглые скобки.
  • Подзапрос может иметь только один столбец в условии SELECT, если только несколько столбцов не указаны в основном запросе для подзапроса для сравнения выбранных столбцов.
  • Подзапросы, которые возвращают более одной строки, могут использоваться только с несколькими операторами значений, такими как оператор IN.
  • Команда ORDER BY не может использоваться в подзапросе, хотя в основном запросе она использоваться может. В подзапросе может использоваться команда GROUP BY для выполнения той же функции, что и ORDER BY.
  • С подзапросом не может использоваться оператор BETWEEN. Однако оператор BETWEEN может использоваться внутри подзапроса.
  • Не рекомендуется создавать запросы со степенью вложения больше трех. Это приводит к увеличению времени выполнения и к сложности восприятия кода.

Синтаксис

SELECT

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

Ниже представлена струтура таблицы для демонстрации примеров

Пример таблицы продавцов SALES

snum sname city comm
1 Колованов Москва 10
2 Петров Тверь 25
3 Плотников Москва 22
4 Кучеров Санкт-Петербург 28
5 Малкин Санкт-Петербург 18
6 Шипачев Челябинск 30
7 Мозякин Одинцово 25
8 Проворов Москва 25

Пример таблицы покупателей CUSTOMERS

cnum cname city rating snum
1 Деснов Москва 90 6
2 Краснов Москва 95 7
3 Кириллов Тверь 96 3
4 Ермолаев Обнинск 98 3
5 Колесников Серпухов 98 5
6 Пушкин Челябинск 90 4
7 Белый Одинцово 85 1
8 Чудинов Москва 89 3
9 Проворов Москва 95 2
10 Лосев Одинцово 75 8

Пример таблицы заказов ORDERS

onum amt odate(YEAR) cnum snum
1001 420 2013 9 4
1002 653 2005 10 7
1003 960 2016 2 1
1004 320 2016 3 3
1005 200 2015 5 4
1006 2560 2014 5 4
1007 1200 2013 7 1
1008 50 2017 1 3
1009 564 2012 3 7
1010 900 2018 6 8

Начнем с такого примера и для начала вспомним, как бы делали этот запрос ранее: посмотрели бы в таблицу SALES (или выполнили отдельный запрос), определили бы snum продавца «Плотников» — он равен 3. И выполнили бы запрос SQL с помощью условия WHERE .

Результат работы

amt odate
320 2016
50 2017

Такой запрос, очевидно, не очень универсален, если нам захочется выбрать тоже самое для другого продавца, то всегда придется определять его snum . В SQL предусмотрена возможность объединять такие запросы в один путем превращения одного из них в подзапрос (вложенный запрос).

В этом примере мы определяем с помощью вложенного запроса идентификатор snum по фамилии из таблицы SALES , а затем, в таблице ORDERS определяем по этому идентификатору нужные нам значения.

Этот SQL запрос отличается тем, что вместо знака = здесь используется оператор IN.

То есть в запросе происходит проверка, содержится ли идентификатор snum из таблицы SALES в массиве значений, который вернул вложенный запрос. Если содержится, то SQL выдаст фамилию этого продавца.

Результат запроса

snum sname
1 Колованов
3 Плотников

Запрос чем то похож на предыдущий, только теперь мы добавляем еще одно поле для сравнения.

Список пар покупатель — продавец

Покупатель Продавец
Проворов Кучеров
Лосев Мозякин
Белый Колованов
Кириллов Мозякин

В этом примере мы сравниваем сразу два поля одновременно по идентификаторам. То есть из таблицы ORDERS берутся те строки, которые удовлетворяют условию не позднее 2014 года, затем вместо идентификаторов подставляются значение имен покупателей и продавцов.

Оператор as нужен для того, чтобы при выводе SQL показывал не имена полей, а то, что мы зададим. И после оператора FROM за именами таблиц стоят сокращения, которые потом используются — это псевдонимы. Псевдонимы можно называть любыми именами, в этом запросе они используются для явного определения поля, так как мы несколько раз обращаемся к одному и тому же полю, только из разных таблиц.

CREATE

Задача — создать копию существующей таблицы.

Копия существующей таблицы может быть создана с помощью комбинации CREATE TABLE и SELECT .

Новая таблица будет имеет те же определение столбцов, могут быть выбраны все столбцы или отдельные столбцы . При создании новой таблицы с помощью существующей таблицы, новая таблица будет заполняться с использованием существующих значений в старой таблице.

Создадим копию таблицы city . Вопрос — почему 1=0?

INSERT

Задача — создать копию существующей таблицы.

Подзапросы также могут использоваться с инструкцией INSERT . Инструкция INSERT использует данные, возвращаемые из подзапроса, для вставки в другую таблицу. Выбранные в подзапросе данные могут быть изменены. Основной синтаксис следующий.

Копирование всей таблицы полностью

Копируем города которые находся в стране с численостью не меньше 500тыс.человек, но не больше 1 миллиона.

UPDATE

Подзапрос может использоваться в сочетании с инструкцией UPDATE . Один или несколько столбцов в таблице могут быть обновлены при использовании подзапроса с помощью инструкции UPDATE . Основной синтаксис следующий.

Исходя из того, что у нас есть таблица CITY_BKP , которая является резервной копией таблицы CITY , в следующем примере для всех записей, для которых Population больше или равно 100000, применяет коэффициент 0,25.

DELETE

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

Внутреннее объединение

Для этого проще всего обратиться к таблице CITY

Но, что если нам необходимо, чтобы в ответе на запрос был не код страны, а её название? Вложенные запросы нам не помогут. А нам надо получить данные из двух таблиц и объединить их в одну. Запросы, которые позволяют это сделать, в SQL называются объединениями. Синтаксис самого простого объединения следующий:

Читайте также:  Таблица 19 века сообщение

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

Чтобы результирующая таблица выглядела так, как мы хотели, необходимо указать условие объединения. Мы связываем наши таблицы по идентификатору, это и будет нашим условием.

Т.е. мы в запросе сделали следующее условие: если в обеих таблицах есть одинаковые идентификаторы, то строки с этим идентификатором необходимо объединить в одну результирующую строку.

Как вы понимаете, объединения дают возможность выбирать любую информацию из любых таблиц, причем объединяемых таблиц может быть и три, и четыре, да и условие для объединения может быть не одно.

JOIN LEFT/RIGHT

JOIN — оператор языка SQL, который является реализацией операции соединения реляционной алгебры. Входит в предложение FROM операторов SELECT , UPDATE и DELETE .

JOIN используется для объединения строк из двух или более таблиц на основе соответствующего столбца между ними.

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

Особенности операции соединения

  • в схему таблицы-результата входят столбцы обеих исходных таблиц
  • каждая строка таблицы-результата является «сцеплением» строки из одной таблицы со строкой второй таблицы

Определение того, какие именно исходные строки войдут в результат и в каких сочетаниях, зависит от типа операции соединения и от явно заданного условия соединения. Условие соединения, то есть условие сопоставления строк исходных таблиц друг с другом, представляет собой логическое выражение (предикат).

Ниже представлена струтура таблицы для демонстрации примеров

Таблица персонала Person

id name city_id
1 Колованов 1
2 Петров 3
3 Плотников 12
4 Кучеров 4
5 Малкин 2
6 Иванов 13

Ниже представлена струтура таблицы для демонстрации примеров

Таблица городов City

id name population
1 Москва 100
2 Нижний Новгород 25
3 Тверь 22
4 Санкт-Петербург 80
5 Выборг 18
6 Челябинск 30
7 Одинцово 5
8 Павлово 5

INNER JOIN

Оператор внутреннего соединения INNER JOIN соединяет две таблицы. Порядок таблиц для оператора неважен, поскольку оператор является симметричным.

Заголовок таблицы-результата является объединением (конкатенацией) заголовков соединяемых таблиц.

Результат запроса

Person.id Person.name Person.city_id City.id City.name City.population
1 Колованов 1 1 Москва 100
2 Петров 3 3 Тверь 22
4 Кучеров 4 4 Санкт-Петербург 80
5 Малкин 2 2 Нижний Новгород 25

INNER JOIN

Тело результата логически формируется следующим образом. Каждая строка одной таблицы сопоставляется с каждой строкой второй таблицы, после чего для полученной «соединённой» строки проверяется условие соединения (вычисляется предикат соединения). Если условие истинно, в таблицу-результат добавляется соответствующая «соединённая» строка.

LEFT JOIN

Возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений.

Результат запроса

Person.id Person.name Person.city_id City.id City.name City.population
1 Колованов 1 1 Москва 100
2 Петров 3 3 Тверь 22
3 Плотников 12 NULL NULL NULL
4 Кучеров 4 4 Санкт-Петербург 80
5 Малкин 2 2 Нижний Новгород 25
6 Иванов 13 NULL NULL NULL

RIGHT JOIN

Возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений.

Источник

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

Здравствуйте, уважаемые читатели! В этой статье мы поговорим о том, что такое вложенные запросы в SQL. Традиционно, рассмотрим несколько примеров с той базой данных, которую создавали в первых статьях.

Введение

Итак, само название говорит о том, что запрос во что-то вложен. Так вот, вложенный запрос в SQL означает, что запрос select выполняется в еще одном запросе select — на самом деле вложенность может быть и многоуровневой, то есть select в select в select и т.д.

Такие запросы обычно используются для получения данных из двух и более таблиц. Они нужны чтобы данные из разных таблиц можно было соотнести и по зависимости осуществить выборку. У вложенных запросов есть и недостаток — зачастую слишком долгое время работы занимает запрос, потому что идет большая нагрузка на сервер. Тем не менее, саму конструкцию необходимо знать и использовать при возможности.

Структура ранее созданных таблиц

Прежде чем перейдем к простому примеру, напомним структуру наших таблиц, с которыми будем работать:

  • Таблица Salespeople (продавцы):
snum sname city comm
1 Колованов Москва 10
2 Петров Тверь 25
3 Плотников Москва 22
4 Кучеров Санкт-Петербург 28
5 Малкин Санкт-Петербург 18
6 Шипачев Челябинск 30
7 Мозякин Одинцово 25
8 Проворов Москва 25
  • Таблица Customers (покупатели):
сnum сname city rating snum
1 Деснов Москва 90 6
2 Краснов Москва 95 7
3 Кириллов Тверь 96 3
4 Ермолаев Обнинск 98 3
5 Колесников Серпухов 98 5
6 Пушкин Челябинск 90 4
7 Лермонтов Одинцово 85 1
8 Белый Москва 89 3
9 Чудинов Москва 96 2
10 Лосев Одинцово 93 8
  • Таблица Orders (заказы)
onum amt odate cnum snum
1001 128 2016-01-01 9 4
1002 1800 2016-04-10 10 7
1003 348 2017-04-08 2 1
1004 500 2016-06-07 3 3
1005 499 2017-12-04 5 4
1006 320 2016-03-03 5 4
1007 80 2017-09-02 7 1
1008 780 2016-03-07 1 3
1009 560 2017-10-07 3 7
1010 900 2016-01-08 6 8

Основы вложенных запросов в SQL

Вывести сумму заказов и дату, которые проводил продавец с фамилией Колованов.

Начнем с такого примера и для начала вспомним, как бы делали этот запрос ранее: посмотрели бы в таблицу Salespeople, определили бы snum продавца Колыванова — он равен 1. И выполнили бы запрос SQL с помощью условия WHERE. Вот пример такого SQL запроса:

Очевидно, какой будет вывод:

amt odate
348 2017-04-08
80 2017-09-02

Такой запрос, очевидно, не очень универсален, если нам захочется выбрать тоже самое для другого продавца, то всегда придется определять его snum. А теперь посмотрим на вложенный запрос:

В этом примере мы определяем с помощью вложенного запроса идентификатор snum по фамилии из таблицы salespeople, а затем, в таблице orders определяем по этому идентификатору нужные нам значения. Таким образом работают вложенные запросы SQL.

Рассмотрим еще один пример:
Показать уникальные номера и фамилии продавцов, которые провели сделки в 2016 году.

Этот SQL запрос отличается тем, что вместо знака = здесь используется оператор IN. Его следует использовать в том случае, если вложенный подзапрос SQL возвращает несколько значений. То есть в запросе происходит проверка, содержится ли идентификатор snum из таблицы salespeople в массиве значений, который вернул вложенный запрос. Если содержится, то SQL выдаст фамилию этого продавца.

Читайте также:  Postgresql как узнать размер таблицы

Получился такой результат:

snum sname
3 Плотников
4 Кучеров
7 Мозякин
8 Проворов

Вложенные запросы SQL с несколькими параметрами

Те примеры, которые мы уже рассмотрели, сравнивали в условии WHERE одно поле. Это конечно хорошо, но стоит отметить, что в SQL предусмотрена возможность сравнения сразу нескольких полей, то есть можно использовать вложенный запрос с несколькими параметрами.

Вывести пары покупателей и продавцов, которые осуществили сделку между собой в 2017 году.

Запрос чем то похож на предыдущий, только теперь мы добавляем еще одно поле для сравнения. Итоговый запрос SQL будет выглядеть таким образом:

Покупатель Продавец
Краснов Колованов
Колесников Кучеров
Лермонтов Колованов
Кириллов Мозякин

В этом примере мы сравниваем сразу два поля одновременно по идентификаторам. То есть из таблицы orders берутся те строки, которые удовлетворяют условию по 2017 году, затем вместо идентификаторов подставляются значение имен покупателей и продавцов.

На самом деле, такой запрос SQL используется крайне редко, обычно используют оператор INNER JOIN, о котором будет сказано в следующей статье.

Дополнительно скажем о конструкциях, которые использовались в этом запросе. Оператор as нужен для того, чтобы при выводе SQL показывал не имена полей, а то, что мы зададим. И после оператора FROM за именами таблиц стоят сокращения, которые потом используются — это псевдонимы. Псевдонимы можно называть любыми именами, в этом запросе они используются для явного определения поля, так как мы несколько раз обращаемся к одному и тому же полю, только из разных таблиц.

Примеры на вложенные запросы SQL

1.Напишите запрос, который бы использовал подзапрос для получения всех Заказов для покупателя с фамилией Краснов. Предположим, что вы не знаете номера этого покупателя, указываемого в поле cnum.

2. Напишите запрос, который вывел бы имена и рейтинг всех покупателей, которые имеют Заказы, сумма которых выше средней.

3. Напишите запрос, который бы выбрал общую сумму всех приобретений в Заказах для каждого продавца, у которого эта общая сумма больше, чем сумма наибольшего Заказа в таблице.

4. Напишите запрос, который бы использовал подзапрос для получения всех Заказов для покупателей проживающих в Москве.

5. Используя подзапрос определить дату заказа, имеющего максимальное значение суммы приобретений (вывести даты и суммы приобретений).

6. Определить покупателей, совершивших сделки с максимальной суммой приобретений.

Заключение

На этом сегодня все, мы познакомились с вложенными запросам в SQL. Очевидно, что это достаточно удобный и понятный способ получения данных из таблиц, но не всегда рационален с точки зрения скорости и нагрузки на сервер. Основные примеры, которые мы разобрали, действительно встречаются на практике языка SQL.

Источник

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

Nested Tables Oracle PL/SQL

В этом учебном материале вы узнаете, как использовать Nested Tables (вложенные таблицы) в Oracle PL/SQL с синтаксисом и примерами.

Описание

В Oracle PL/SQL Nested Tables представляет собой тип столбца, который хранит неограниченный набор строк в определенном порядке. Когда вы извлекаете значение вложенной таблицы из базы данных в переменную Nested Tables, PL/SQL выдает строки последовательных индексов, начиная с 1. Используя эти индексы, вы можете обращаться к отдельным строкам переменной Nested Tables.

Синтаксис

Синтаксис для определения, а затем объявление переменной типа Nested Tables в Oracle PL/SQL.

Параметры или аргументы

nt_type — имя типа, используемое позже для объявления коллекций.
element_type — любой тип данных PL/SQL, за исключением: REF CURSOR
var_nt – переменная типа Nested Tables.

Примечание

  • Неинициализированная переменная вложенной таблицы — это нулевая коллекция.
  • Вы должны инициализировать его, либо пустым, либо присваивая ему значение, отличное от NULL.

Пример Nested Tables как локальный тип

Рассмотрим пример Oracle PL/SQL который определяет локальный тип вложенной таблицы Roster , объявляет переменную этого типа names (инициализирует ее конструктором) и определяет процедуру print_names , которая печатает Nested Tables. (В процедуре используются методы коллекций FIRST и LAST.) Пример вызывает процедуру три раза: после инициализации переменной, после изменения значения одного элемента и после использования конструктора для изменения значения всех элементов. После вызова второго конструктора вложенная таблица имеет только два элемента. Ссылка на элемент 3 вызовет ошибку ORA-06533.

Источник

Вложенные запросы в T-SQL – описание и примеры

Приветствую Вас на сайте Info-Comp.ru! В этой заметке мы рассмотрим вложенные запросы языка SQL, я расскажу, что такое вложенные запросы, где и в каких конструкциях их можно использовать, покажу примеры их использования, а также расскажу про особенности и некоторые ограничения вложенных SQL запросов или, как еще их иногда называют, подзапросов SQL.

Скриншот 1

  1. Что такое вложенные запросы SQL?
  2. Особенности вложенных запросов
  3. Примеры вложенных SQL запросов в Microsoft SQL Server
  4. Исходные данные для примеров
  5. Пример 1 – Вложенный запрос в секции SELECT
  6. Пример 2 – Вложенный запрос в секции FROM
  7. Пример 3 – Вложенный запрос в секции JOIN
  8. Пример 4 – Вложенный запрос в секции WHERE
  9. Пример 5 – Множественная вложенность SQL запросов

Что такое вложенные запросы SQL?

Вложенный SQL запрос – это отдельный запрос, который используется внутри SQL инструкции. Вложенный запрос также называют внутренним SQL запросом или подзапросом, а инструкцию, в которой используется вложенный запрос, называют внешним SQL запросом.

Вложенные SQL запросы могут быть использованы везде, где разрешено использовать SQL выражения, это может быть и секция SELECT, и FROM, и WHERE, и даже JOIN, чуть ниже я покажу примеры использования вложенных запросов в каждой из перечисленных выше секций.

Использовать вложенные запросы иногда бывает очень удобно, но обязательно стоит отметить и то, что в некоторых случаях использование вложенного SQL запроса может снизить производительность, т.е. замедлить работу всей SQL инструкции. Тем более что не редко вложенный SQL запрос можно заменить простым объединением.

Читайте также:  Таблица органоид строение функции растительная или животная клетка

Кроме того, вложенные запросы могут быть вложены друг в друга (в некоторых случаях вплоть до 32-го уровня), но тем самым значительно снижается читабельность SQL инструкций и ее понятность, а также повышается ее сложность.

Кстати, о том, как писать хорошие понятные SQL инструкции на языке T-SQL, которые будут понятны и Вам спустя время, и другим программистам, я подробно рассказал в своей книге – «Стиль программирования на T-SQL – основы правильного написания кода».

Заметка! Для комплексного изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL, в которых используется последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL.

Особенности вложенных запросов

Вложенные SQL запросы имеют несколько важных особенностей, про которые не стоит забывать при конструировании SQL инструкций:

  • Вложенный запрос всегда заключен в скобки;
  • Вложенный запрос не может содержать предложения COMPUTE, INTO и FOR BROWSE;
  • Вложенный запрос может содержать конструкцию сортировки ORDER BY, только если он содержит оператор TOP, т.е. без TOP, ORDER BY в подзапросе использовать не получится;
  • Если вложенный запрос используется в операции сравнения (за исключением операторов EXISTS и IN), он должен возвращать одно значение и один столбец;
  • Типы данных ntext, text и image не могут участвовать в списке выбора вложенных запросов.

Примеры вложенных SQL запросов в Microsoft SQL Server

Ну а теперь пора переходить к практике, сейчас мы рассмотрим несколько примеров использования вложенных SQL запросов, при этом я, как и обещал, покажу применение вложенных запросов в разных конструкциях языка T-SQL.

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

Исходные данные для примеров

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

Также сразу скажу, что в качестве SQL сервера у меня выступает версия Microsoft SQL Server 2017 Express.

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

Скриншот 2

Подробно останавливаться на том, что делает представленная выше инструкция, в этой статье я не буду, так как это совершенно другая тема, но если эта SQL инструкция Вам не понятна, и Вам интересно узнать, что конкретно она делает, можете почитать следующие статьи, а для комплексного изучения языка T-SQL — книгу, которую я уже упоминал:

Пример 1 – Вложенный запрос в секции SELECT

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

Допустим, что нам нужно получить список товаров с названием категорий, а так как названия категории в таблице Goods у нас нет, это название мы будем получать из таблицы Categories.

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

А также это можно реализовать и с помощью объединения JOIN, что на самом деле предпочтительней, и в подобных случаях я рекомендую использовать именно JOIN, тем самым SQL запрос становится более читабельным и простым для понимания. Ниже я представлю оба SQL запроса.

Скриншот 3

Пример 2 – Вложенный запрос в секции FROM

Сейчас давайте я покажу, как можно использовать вложенный запрос в секции FROM в качестве источника данных. Такие вложенные запросы обычно называют – Производные таблицы, так как они возвращают табличные данные.

Скриншот 4

В данном примере в качестве источника данных в секции FROM мы указали вложенный запрос, который возвращает идентификатор и наименование товаров из первой категории.

Пример 3 – Вложенный запрос в секции JOIN

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

Скриншот 5

Здесь во вложенном запросе мы получаем идентификатор и наименование первой категории, а затем полученные табличные данные объединяем с таблицей Goods.

Пример 4 – Вложенный запрос в секции WHERE

Очень часто вложенные запросы используют в условии WHERE, при этом здесь стоит понимать, с каким именно оператором сравнения используется вложенный запрос, так как это важно.

Например, если использовать вложенный запрос с оператором равно (=), то он не может возвращать больше одного значения, т.е. если он вернет больше одного значения, выйдет ошибка, и SQL запрос не выполнится. Однако если использовать вложенный запрос с оператором IN (включая NOT IN) или EXISTS (включая NOT EXISTS), то вложенный запрос уже может возвращать список значений.

Вложенный запрос с оператором = (равно)

В этом запросе мы выводим все товары из таблицы Goods, у которых идентификатор категории равен значению, которое возвращает вложенный запрос, а он возвращает идентификатор категории с наименованием «Комплектующие ПК», таким образом, в нашем случае вложенный запрос возвращает только одно значение.

Скриншот 6

Вложенный запрос с оператором IN

Здесь мы используем для сравнения оператор IN, поэтому вложенный запрос в таком случае может уже возвращать несколько значений, для примера мы просто уберем условие WHERE во вложенном запросе.

Скриншот 7

Пример 5 – Множественная вложенность SQL запросов

Как я уже отмечал, вложенный запрос может быть вложен в другой вложенный SQL запрос, тем самым получается множественная вложенность.

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

Скриншот 8

Дополнительные примеры использования вложенных запросов, например, с использованием оператора EXISTS, можете посмотреть в статье – Логический оператор EXISTS в T-SQL – Описание и примеры.

На сегодня у меня все, надеюсь, материал был Вам полезен, пока!

Источник

Adblock
detector