17:20
Подзапросы в SELECT: Использование подзапросов в SELECT.

Курс по SQL

Урок 30: Подзапросы в SELECT: Использование подзапросов в SELECT

В этом уроке мы подробно рассмотрим использование подзапросов в SELECT в SQL. Подзапросы позволяют выполнять вложенные запросы для получения дополнительных данных в основном запросе. Мы изучим синтаксис и примеры использования подзапросов в SELECT.

Основы подзапросов в SELECT

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

SELECT Имя,
 (SELECT Название FROM Курсы WHERE Курсы.ID = Студенты.КурсID) AS Курс
FROM Студенты;

Результат выполнения

Имя | Курс
Иван | Математика
Мария | Физика

Синтаксис подзапросов в SELECT

Синтаксис подзапросов в SELECT следующий:

SELECT столбцы,
 (SELECT столбец FROM таблица WHERE условие) AS псевдоним
FROM таблица;

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

Использование псевдонимов таблиц

Для упрощения запроса и повышения его читаемости вы можете использовать псевдонимы таблиц. Рассмотрим пример использования псевдонимов таблиц:

SELECT s.Имя,
 (SELECT Название FROM Курсы c WHERE c.ID = s.КурсID) AS Курс
FROM Студенты s;

Результат выполнения

Имя | Курс
Иван | Математика
Мария | Физика

Использование нескольких подзапросов в SELECT

Вы можете использовать несколько подзапросов в одном запросе для выборки различных данных. Рассмотрим пример:

SELECT s.Имя,
 (SELECT Название FROM Курсы c WHERE c.ID = s.КурсID) AS Курс,
 (SELECT Имя FROM Преподаватели p WHERE p.ID = (SELECT ПреподавательID FROM Курсы c WHERE c.ID = s.КурсID)) AS Преподаватель
FROM Студенты s;

Результат выполнения

Имя | Курс | Преподаватель
Иван | Математика | Петров
Мария | Физика | Иванов

Фильтрация данных при использовании подзапросов в SELECT

Вы можете использовать подзапросы в SELECT для фильтрации данных. Рассмотрим пример, где мы выбираем студентов, которые учатся на курсах, преподаваемых преподавателем с именем «Иванов»:

SELECT s.Имя
FROM Студенты s
WHERE s.КурсID = (SELECT c.ID FROM Курсы c WHERE c.ПреподавательID = (SELECT p.ID FROM Преподаватели p WHERE p.Имя = 'Иванов'));

Результат выполнения

Имя
Мария

Упражнения

Упражнение 1: Подзапрос в SELECT

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

Решение:

SELECT Имя,
 (SELECT Название FROM Курсы WHERE Курсы.ID = Студенты.КурсID) AS Курс
FROM Студенты;

Объяснение: Мы использовали подзапрос в SELECT для выборки названий курсов, на которых учатся студенты.

Упражнение 2: Использование нескольких подзапросов в SELECT

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

Решение:

SELECT s.Имя,
 (SELECT Название FROM Курсы c WHERE c.ID = s.КурсID) AS Курс,
 (SELECT Имя FROM Преподаватели p WHERE p.ID = (SELECT ПреподавательID FROM Курсы c WHERE c.ID = s.КурсID)) AS Преподаватель
FROM Студенты s;

Объяснение: Мы использовали несколько подзапросов в SELECT для выборки названий курсов и имен преподавателей, которые преподают эти курсы.

Упражнение 3: Фильтрация данных с использованием подзапросов в SELECT

Выполните запрос для выборки имен студентов, которые учатся на курсах, преподаваемых преподавателем с именем «Петров», используя подзапросы в SELECT.

Решение:

SELECT s.Имя
FROM Студенты s
WHERE s.КурсID = (SELECT c.ID FROM Курсы c WHERE c.ПреподавательID = (SELECT p.ID FROM Преподаватели p WHERE p.Имя = 'Петров'));

Объяснение: Мы использовали подзапросы в SELECT для фильтрации студентов, которые учатся на курсах, преподаваемых преподавателем с именем «Петров».

Упражнение 4: Подзапросы в SELECT с использованием псевдонимов

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

Решение:

SELECT s.Имя,
 (SELECT Название FROM Курсы c WHERE c.ID = s.КурсID) AS Курс
FROM Студенты s;

Объяснение: Мы использовали псевдонимы таблиц для упрощения запроса и повышения его читаемости.

Категория: SQL | Просмотров: 98 | Добавил: Admin | Рейтинг: 1.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: