17:20
Полное соединение (FULL JOIN): Использование полного соединения.

Курс по SQL

Урок 27: Полное соединение (FULL JOIN): Использование полного соединения

В этом уроке мы подробно рассмотрим использование полного соединения (FULL JOIN) в SQL. Полное соединение используется для выборки всех строк из обеих таблиц, когда есть совпадение в одной из таблиц. Мы изучим синтаксис и примеры использования FULL JOIN.

Основы FULL JOIN

FULL JOIN возвращает все строки, когда есть совпадение в одной из таблиц. Если совпадающих строк в одной из таблиц нет, результат будет содержать NULL значения для этой таблицы. Рассмотрим пример соединения таблиц «Студенты» и «Курсы» по столбцу «КурсID»:

SELECT Студенты.Имя, Курсы.Название
FROM Студенты
FULL JOIN Курсы ON Студенты.КурсID = Курсы.ID;

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

Имя | Название
Иван | Математика
Мария | Физика
Петр | NULL
NULL | Химия

Синтаксис FULL JOIN

Синтаксис FULL JOIN следующий:

SELECT столбцы
FROM таблица1
FULL JOIN таблица2 ON таблица1.совпадающий_столбец = таблица2.совпадающий_столбец;

Вы можете выбирать любые столбцы из обеих таблиц, указав их в разделе SELECT.

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

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

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

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

Имя | Название
Иван | Математика
Мария | Физика
Петр | NULL
NULL | Химия

Соединение нескольких таблиц

Вы можете использовать FULL JOIN для соединения более двух таблиц. Рассмотрим пример соединения таблиц «Студенты», «Курсы» и «Преподаватели» по столбцам «КурсID» и «ПреподавательID»:

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

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

Имя | Название | Преподаватель
Иван | Математика | Петров
Мария | Физика | Иванов
Петр | NULL | NULL
NULL | Химия | Сидоров

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

Вы можете использовать условия в предложении WHERE для фильтрации данных, возвращаемых FULL JOIN. Рассмотрим пример выборки всех студентов и курсов, на которых они учатся, включая тех студентов, которые не учатся на курсе, и курсы, на которых нет студентов:

SELECT s.Имя, c.Название
FROM Студенты AS s
FULL JOIN Курсы AS c ON s.КурсID = c.ID
WHERE s.Имя IS NOT NULL OR c.Название IS NOT NULL;

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

Имя | Название
Иван | Математика
Мария | Физика
Петр | NULL
NULL | Химия

Упражнения

Упражнение 1: Соединение таблиц с использованием FULL JOIN

Выполните соединение таблиц «Студенты» и «Курсы» для выборки всех студентов и названий курсов, на которых они учатся, включая тех студентов, которые не учатся на курсе, и курсы, на которых нет студентов.

Решение:

SELECT Студенты.Имя, Курсы.Название
FROM Студенты
FULL JOIN Курсы ON Студенты.КурсID = Курсы.ID;

Объяснение: Мы использовали команду FULL JOIN для соединения таблиц «Студенты» и «Курсы» по столбцу «КурсID», чтобы выбрать всех студентов, включая тех, которые не учатся на курсе, и курсы, на которых нет студентов.

Упражнение 2: Использование псевдонимов таблиц

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

Решение:

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

Объяснение: Мы использовали псевдонимы таблиц «s» для «Студенты» и «c» для «Курсы», чтобы сделать запрос более читаемым.

Упражнение 3: Соединение нескольких таблиц

Выполните соединение таблиц «Студенты», «Курсы» и «Преподаватели» для выборки всех студентов, названий курсов и имен преподавателей, которые преподают эти курсы, включая тех студентов, которые не учатся на курсе, и курсы, на которых нет студентов.

Решение:

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

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

Упражнение 4: Фильтрация данных при использовании FULL JOIN

Выполните соединение таблиц «Студенты» и «Курсы» и выберите всех студентов и курсы, на которых они учатся, включая тех студентов, которые не учатся на курсе, и курсы, на которых нет студентов.

Решение:

SELECT s.Имя, c.Название
FROM Студенты AS s
FULL JOIN Курсы AS c ON s.КурсID = c.ID
WHERE s.Имя IS NOT NULL OR c.Название IS NOT NULL;

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

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