JOIN у SQL Server: типи з прикладами
⚡ Розумний підсумок
Операції JOIN у SQL Server об'єднують рядки з двох або більше таблиць на основі пов'язаного стовпця, використовуючи операції INNER, LEFT OUTER, RIGHT OUTER та FULL OUTER, щоб контролювати, які збігаючі та незбігаючі рядки відображатимуться в результаті.

Що таке об'єднання (Joins) у SQL Server?
Дані можна отримати з кількох таблиць за допомогою оператора JOIN. SQL ServerОперація JOIN об'єднує рядки з двох або більше таблиць на основі пов'язаного стовпця між ними, найчастіше primary key зіставлено з зовнішній ключУ SQL Server існує чотири основні типи операцій JOIN:
- ВНУТРІШНЄ ОБ'ЄДНАННЯ / просте об'єднання
- ЛІВЕ ЗОВНІШНЄ З'ЄДНАННЯ / ЛІВЕ З'ЄДНАННЯ
- ПРАВИЙ ЗОВНІШНІЙ З'ЄДНАННЯ / ПРАВИЙ З'ЄДНАННЯ
- ПОВНЕ ПРИЄДНАННЯ
У таблиці нижче підсумовано, які рядки повертає кожен тип JOIN:
| Тип JOIN | Повернені рядки |
| INNER JOIN | Тільки рядки, де умова об'єднання збігається в обох таблицях. |
| ЗАЛИШИЛИ ЗОВНІШНЕ ПРИЄДНАННЯ | Усі рядки з лівої таблиці, а також відповідні рядки правої таблиці (NULL-значення, якщо немає збігів). |
| ПРАВЕ ЗОВНІШНЄ З'ЄДНАННЯ | Усі рядки з правої таблиці, а також відповідні рядки з лівої таблиці (NULL-значення, якщо немає збігів). |
| ПОВНЕ ПРИЄДНАННЯ | Усі рядки з обох таблиць, з NULL-значеннями там, де умова не виконується. |
У наведених нижче прикладах використовуються два Таблиці, Студенти та Плата, об'єднані у спільній колонці вступу. У кожному розділі пояснюється один тип JOIN з його синтаксисом, обробленим запитом та результатом.
INNER JOIN
Цей тип SQL Server Функція JOIN повертає рядки з усіх таблиць, у яких умова об'єднання є істинною. Синтаксис функції такий:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Для демонстрації цього ми використаємо дві наступні таблиці. У таблиці «Студенти» нижче перелічено кожного студента та його номер зарахування:
У таблиці оплати нижче зазначено суму, сплачену кожним номером приймальної комісії:
Наступна команда демонструє INNER JOIN у SQL Server на прикладі:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
Команда повертає наступний результат, який показує лише номери зарахування, присутні в обох таблицях:
Ми можемо визначити, які студенти сплатили внесок. Ми використовували стовпець зі спільними значеннями в обох таблицях, тобто стовпець вступу.
ЗАЛИШИЛИ ЗОВНІШНЕ ПРИЄДНАННЯ
Цей тип об'єднання повертає всі рядки з лівої таблиці, а також записи з правої таблиці з відповідними значеннями. Наприклад:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
Код повертає наступний результат: keeping кожен студент, навіть якщо записи про оплату не збігаються:
Записи без відповідних значень замінюються значеннями NULL у відповідних стовпцях.
ПРАВЕ ЗОВНІШНЄ З'ЄДНАННЯ
Цей тип об’єднання повертає всі рядки з правої таблиці та лише ті, що мають відповідні значення в лівій таблиці. Наприклад:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
Оператор для OUTER JOINS у SQL Server повертає такий результат:
Причина вищезазначеного виводу полягає в тому, що всі рядки в таблиці «Плата» доступні в таблиці «Студенти», коли вони зіставляються в стовпці вступу.
ПОВНЕ ПРИЄДНАННЯ
Цей тип об'єднання повертає всі рядки з обох таблиць, зі значеннями NULL, якщо умова JOIN не виконується. Наприклад:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
Код повертає наступний результат для запитів FULL OUTER JOIN у SQL, об'єднуючи кожен рядок з обох таблиць:






