SQL JOINS
SQL-з’єднання є основною концепцією в системах управління реляційними базами даних (RDBMS). Вони дозволяють отримувати дані з кількох таблиць, ґрунтуючись на спільній колонці між ними. У цій статті ми розглянемо різні типи SQL-з’єднань і як ефективно їх використовувати.
ТИПИ SQL З’ЄДНАНЬ:
- Inner Join
- Left Join або Left Outer Join
- Right Join або Right Outer Join
- Full Join або Full Outer Join
- Cross Join
Inner Join:
INNER JOIN повертає тільки ті рядки, що мають збігаються значення в обох таблицях. Якщо збігу немає, рядок виключається з результату.
Декілька запитань по Inner Join:
- Маємо дві таблиці
orders
іcustomers
, деorders.customer_id
є зовнішнім ключем, що посилається наcustomers.id
. Напишіть SQL-запит для отримання ID замовлення, імені клієнта та дати замовлення для всіх замовлень.
Рішення:
Inner Joins
- Напишіть запит для отримання всіх назв продуктів і категорій, де назва категорії схожа на “Electronics”, використовуючи наступні таблиці:
Рішення:
Запит 2: Рішення
- Напишіть запит для знаходження середньої зарплати за відділом і виведення тільки тих відділів, де середня зарплата більша за 75 000.
Запит 3: Рішення
LEFT JOIN:
LEFT JOIN (або LEFT OUTER JOIN) повертає всі рядки з лівої таблиці та збігаються рядки з правої таблиці. Якщо збігу не знайдено, для колонок правої таблиці повертаються значення NULL.
Декілька запитань по Left Join:
- Напишіть запит для отримання всіх курсів та студентів, зареєстрованих на них, включаючи курси без реєстрацій.
- Маємо наступні таблиці:
Напишіть запит для отримання всіх замовлень, включаючи деталі замовлень та інформацію про клієнта. Якщо замовлення не має відповідного клієнта, покажіть NULL для інформації про клієнта.
Запит 2: Left join
FULL OUTER JOIN:
FULL OUTER JOIN — це тип з’єднання в SQL, який повертає всі рядки з обох таблиць, з відповідними рядками з обох сторін, де це можливо. Якщо немає збігу, результат міститиме NULL значення для колонок таблиці, в якій немає відповідного рядка.
- Збігаються рядки: Якщо рядок у лівій таблиці має відповідний рядок у правій таблиці (згідно з умовою з’єднання), результат міститиме колонки з обох таблиць.
- Не збігаються рядки: Якщо рядок в одній таблиці не має відповідного рядка в іншій таблиці, результат все одно міститиме цей рядок, але з NULL значеннями у колонках таблиці без відповідного рядка.
- Результат: Це з’єднання поєднує поведінку обох LEFT JOIN і RIGHT JOIN, повертаючи всі рядки з обох таблиць.
Декілька запитань по Full Outer Joins:
Запит для знаходження працівників, які є тільки в одному з наборів даних (не спільні в обох)
Результат має бути:
Q2. Маємо дві таблиці:
Знайдіть невідповідні записи з цих двох таблиць, а також запит, коли є різниця в ціні між двома таблицями.
Рішення:
ВИХІД:
CROSS JOIN:
CROSS JOIN — це тип з’єднання, який повертає Декартовий добуток двох таблиць. Це означає, що кожен рядок з першої таблиці поєднується з кожним рядком з другої таблиці. На відміну від інших з’єднань (наприклад, INNER JOIN, LEFT JOIN), CROSS JOIN не вимагає умови.
Ключові моменти:
- Без умови для співпадіння: Він повертає всі можливі комбінації рядків з обох таблиць.
- Кількість рядків у результаті: Результат матиме кількість рядків, рівну добутку кількості рядків у першій таблиці і кількості рядків у другій таблиці.
- Якщо в таблиці A є m рядків, а в таблиці B — n рядків, то CROSS JOIN поверне m * n рядків.
- Використання: Це корисно, коли потрібно генерувати комбінації даних, наприклад, при створенні тестових даних або генерації всіх комбінацій елементів з двох списків.
Приклад cross-join:
Дано дві таблиці, Products
і Colors
:
Запит:
Результат:
Слідкуйте за новими матеріалами, якщо хочете практикувати більше запитань по з’єднаннях. Дякуємо за увагу!
Перекладено з: NOT YOUR USUAL ARTICLE ON SQL JOINS