Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Клауза UNION | Вкладені Запити
Розширений Рівень SQL
course content

Зміст курсу

Розширений Рівень SQL

Розширений Рівень SQL

1. Групування
2. Вкладені Запити
3. Об'єднання Таблиць
4. DDL та DML в SQL

bookКлауза UNION

Ви успішно освоїли внутрішні запити, і ми вже зацікавили клієнта, який хоче, щоб ми написали для нього SQL-запити.

Але є одна вимога - нам доведеться об'єднувати багато таблиць і працювати з ними. Тому, перш ніж поглиблюватися в JOINs, давайте ознайомимося з важливою конструкцією: UNION.

Давайте коротко розглянемо ключові моменти при роботі з UNION:

  1. Кількість та порядок стовпців: Усі запити, які комбінуються за допомогою UNION, повинні мати однакову кількість стовпців, і ці стовпці повинні бути в тому ж порядку;
  2. Типи даних: Типи даних відповідних стовпців кожного запиту мусять бути сумісними;
  3. Унікальні рядки: За замовчуванням, UNION видаляє дублікати рядків. Для включення дублікатів використовується UNION ALL.

Для кращого розуміння як правильно об'єднувати таблиці за допомогою клози UNION, я ввів додаткову таблицю, яка містить інформацію про підрядників.

Тут небагато інформації, лише first_name, last_name та email.

Ось як виглядає ця таблиця:

Ви можете побачити, що ця таблиця має схожість з таблицею employees. Використовуючи ключове слово UNION, ми можемо об'єднати ці дві таблиці, щоб, наприклад, побачити список усіх імен та прізвищ співробітників і підрядників, які беруть участь у діяльності компанії.

Для цього ми використаємо ключове слово UNION:

12345678
(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
copy

Давайте коротко розглянемо, що тут відбувається:

У нас є 2 запити, які повертають 3 стовпці з однаковими типами даних для кожного стовпця.

Тобто, ми хочемо побачити Id, first_name, та last_name всіх учасників компанії. Ми також змінили псевдонім Id, так що стовпці в обох запитах SELECT мають однакові назви.

Далі ми використовуємо клітинку UNION, щоб поєднати результати цих двох запитів SELECT з вилученням дублікатів (хоча у нас немає дублікатів).

Після цього ми використовуємо клітинку ORDER BY для сортування за Id.

Примітка

Ми сортуємо за Id, який є спільним стовпцем для обох таблиць.

Для кращого розуміння потрібно усвідомити, що після поєднання за допомогою клітинки UNION, ми отримуємо "один великий запит", з яким потім можна працювати, використовуючи різні клітинки; в нашому випадку це клітинка ORDER BY.

Але ми не можемо використовувати умови, як WHERE чи GROUP BY для таблиць, об'єднаних таким чином за допомогою умови UNION.

Для цього нам потрібно записати це об’єднання у вигляді підзапиту в секції FROM.

Ось як це буде виглядати:

123456789
SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
copy

Отже, використання запиту у вигляді підзапиту у розділі FROM відкриває перед нами широкий спектр можливостей!

Примітка:

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

1. Які стовпці обов'язкові при використанні клози `UNION` в SQL?
2. Як за замовчуванням клаза `UNION` обробляє дублікати рядків?
Які стовпці обов'язкові при використанні клози `UNION` в SQL?

Які стовпці обов'язкові при використанні клози UNION в SQL?

Виберіть правильну відповідь

Як за замовчуванням клаза `UNION` обробляє дублікати рядків?

Як за замовчуванням клаза UNION обробляє дублікати рядків?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 5
some-alt