ВГОРУ

SQL-Урок 10. Поєднання таблиць (INNER JOIN)

YouLibreCalc for Excel logo

Найбільш потужною особливістю мови SQL є можливіть поєднувати різні таблиці в оперативній пам'яті СУБД під час виконання запитів. Поєднання дуже часто використовуються для аналізу даних. Як правило, дані знаходяться в різних таблицях, що дозволяє їх більш ефективно зберігати (оскільки інформація не дублюється), спрощує обробку даних та дозволяє масштабувати базу даних (можливо додавати нові таблиці з додатковою інформацією).

Таблиці баз даних, які використовуються в СУБД MS Access являються реляційними таблицями, тобто всі таблиці можна пов'язати між собою по спільним полям.


1. Створення поєднання таблиць (JOINS)

Поєднання таблиць дуже проста процедура. Потрібно вказати всі таблиці, які будуть включені в поєднання та "пояснити" СУБД, як вони будуть пов'язані між собою. Поєднання робиться за допомогою слова WHERE, наприклад:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers, Sumproduct 
WHERE Sellers.City = Sumproduct.City

Поєднавши дві таблиці, ми змогли побачити які товари реалізує кожен продавець. Розглянемо код запиту детальніше, оскільки він трохи відрізняється від звичайного запиту. Оператор SELECT починається з вказанням стовпців, які ми хочемо вивести, проте ці поля знаходяться в різних таблицях, речення FROM містить дві таблиці, які ми хочемо поєднати в операторі SELECT, таблиці поєднуються за допомогою слова WHERE, яке вказує стовпці для поєднання. Обов'язково потрібно вказувати повну назву поля (Таблиця.Поле), оскільки поле City є в обидвох таблицях.

2. Внутрішнє поєднання (INNER JOIN)

В попередньому прикладі для поєднання таблиць ми використали слово WHERE, яке здійснює перевірку на основі еквівалентності двох таблиць. Поєднання такого типу називається також "внутрішнім поєднанням". Існує також і інший спосіб поєднання таблиць, який явно вказує на тип поєднання. Розглянемо наступний приклад:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers 
INNER JOIN Sumproduct 
ON Sellers.City = Sumproduct.City

В цьому запиті замість WHERE ми використали конструкцію INNER JOIN ... ON ..., яка дала аналогічний результат. Незважаючи на те, що поєднання з реченням WHERE є коротшим, все таки, краще використовувати INNER JOIN, оскільки вона є більш гнучкою, про що буде детальніше розказано в наступних розділах.