Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpora_Bd_Avtosokhranenny_1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
86.4 Кб
Скачать

Вопрос 38. Использование подзапросов в запросах на выборку. Язык sql

Подзапросы, внутренние или вложенные запросы – есть не что иное, как запрос внутри запроса. Обычно, подзапрос используется в конструкции WHERE. И, в большинстве случаев, подзапрос используется, когда вы можете получить значение с помощью запроса, но не знаете конкретного результата. Подзапросы являются альтернативным путем получения данных из множества таблиц. Наряду с операторами сравнения такими, как =, <, >, >=, <= и др., Вы можете использовать подзапросы с перечисленными ниже конструкциями:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

Примеры подзапросов

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

SELECT first_name, last_name, subject  FROM student_details  WHERE games NOT IN ('Cricket', 'Football');

Тогда результат будет примерно таким:

first_name last_name games ------------ ----------- ---------- Shekar Gowda Badminton Priya Chandra Chess

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

INSERT INTO maths_group(id, name)  SELECT id, first_name || ' ' || last_name  FROM student_details WHERE subject= 'Maths

) Подзапрос может использоваться с оператором SELECT, как описано ниже. Давайте используем таблицы product и order_items, объединив их между собой

select p.product_name, p.supplier_name, (select order_id from order_items where product_id = 101) as order_id from product p where p.product_id = 101

product_name supplier_name order_id -------------- -------------- ---------- Television Onida 5103

Соотнесенный подзапрос

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

SELECT p.product_name FROM product p  WHERE p.product_id = (SELECT o.product_id FROM order_items o  WHERE o.product_id = p.product_id); 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]