Sql - урок 6

Головна → Уроки SQL → Урок 6. Об'єднання таблиць (внутрішнє об'єднання)

Синтаксис самого простого об'єднання наступний:

SELECT імена_столбцов_табліци_1, імена_столбцов_табліци_2 FROM імя_табліци_1, імя_табліци_2;

Давайте створимо просте об'єднання:

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

На схемі буде зрозуміліше:

Тобто ми в запиті зробили таку умову: якщо в обох таблицях є однакові ідентифікатори, то рядки з цим ідентифікатором необхідно об'єднати в одну результуючу рядок.

Зверніть увагу на дві речі:
  • Якщо в одній з поєднуваних таблиць є рядок з ідентифікатором, якого немає в інший об'єднаній таблиці, то в результуючій таблиці рядки з таким ідентифікатором не буде. У нашому прикладі є користувач Oleg (id = 5), але він не створював теми, тому в результаті запиту його немає.
  • При вказівці умови назву стовпця пишеться після назви таблиці, в якій цей стовпець знаходиться (через точку). Це зроблено, щоб уникнути плутанини, адже стовпці в різних таблицях можуть мати однакові назви, і MySQL може не зрозуміти, про які конкретно шпальтах йдеться.

  • Взагалі, коректний синтаксис об'єднання з умовою виглядає так:

    SELECT імя_табліци_1.імя_столбца1_табліци_1, імя_табліци_1.імя_столбца2_табліци_1, імя_табліци_2.імя_столбца1_табліци_2, імя_табліци_2.імя_столбца2_табліци_2 FROM імя_табліци_1, імя_табліци_2 WHERE імя_табліци_1.імя_столбца_по_которому_об'едіняем = імя_табліци_2.імя_столбца_по_которому_об'едіняем;

    Якщо ім'я стовпця унікально, то назва таблиці можна опустити (як ми робили в прикладі), але робити це не рекомендується.

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

    Але щоб замість ідентифікаторів відображалися імена і назви, нам доведеться зробити об'єднання трьох таблиць:

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

    Якщо цей сайт виявився вам корисний, ви можете допомогти в його розвитку, поставивши одну з цих посилань на свій сайт.

    Схожі статті