Багатотабличні запити SQL. Об'єднання таблиць

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

Внутрішнє об'єднання являє собою найпростіший випадок, коли після слова SELECT перераховуються поля, які належать різним таблицям. Наприклад, нехай маємо дві таблиці Cars і Drive

Об'єднання таблиць SQL

Об'єднання таблиць SQL

для яких запишемо наступний запит:

SELECT c.model, c.price, c.year, d.drive FROM Cars c, Drive d WHERE c.drive_id = d.drive_id;

Об'єднання таблиць SQL

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

Зауваження: при внутрішньому об'єднанні всі таблиці, поля яких беруть участь у SQL запиті є ріноправним.

При зовнішньму з'єднанні таблиць є можливість вказати, яка з таблиць буде головною, а яка підлеглою. При використанні такого об'єднання операнд FROM має наступний формат:

FROM <Тфблиця 1> [<Тип об'єднання>] JOIN <Таблиця 2> ON <Критерій відбору>

Критерій відбору після слова ON задає умову відбору записів у результуючий набір даних. Таблиці, які беруть участь у об'єднанні, вказуються ліворуч і праворуч від слова JOIN. Яка з двох таблиць буде головною визначає тип з'єднання:

  1. LEFT — головна таблиця вказана зліва.
  2. RIGHT — головна таблиця вказана справа ( за замовчуванням ).

Ось запит, в якому використовується зовнішнє об'єднання таблиць:

SELECT c.model, d.drive FROM Cars c LEFT JOIN Drive d ON c.drive_id = d.drive_id;

Об'єднання таблиць SQL

Як і у попередньому прикладі, обєднюються таблиці Cars, яка містить список автомобілів ( головна ) та Drive — містить тип приводу автомобілів.

Матеріал був корисним, поділись в соціальних мережах:

Якщо тобі сподобалась дана тема, залиш свій коментар