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

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

1. Створення об'єднання таблиць

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

SELECT DISTINCT Seller_name, Product FROM Sellers, Sumproduct WHERE Sellers.City = Sumproduct.City

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

2. Внутрішнє об'єднання

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

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

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

Статті по темі:

  • SQL-Урок 9. Підзапити
  • SQL-Урок 11. Розширене поєднання таблиць (OUTER JOIN)