ЛІВЕ ТА ПРАВЕ ОБ'ЄДНАННЯ
ПРИЄДНАННЯ ЗЛІВА
A LEFT JOIN, також відомий LEFT OUTER JOINяк , – це тип операції SQL, яка зберігає всі рядки з лівої (або першої) таблиці в запиті незалежно від того, чи є відповідний рядок у правій (або другій) таблиці.
Коли знайдено збіг, стовпці з правої таблиці заповнюються відповідними значеннями. Однак, якщо збігів немає, результат містить null-значення в стовпцях, отриманих із потрібної таблиці.
Це об'єднання зручно використовувати, коли потрібно створити повний список з однієї таблиці, додаючи пов'язані дані з іншої, навіть якщо такі зв'язки неповні або відсутні.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
LEFT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
Запит SQL, який використовує таблицю LEFT JOIN , отримує всіх клієнтів із таблиці, включно з sales.customers тими, які не відповідають замовленням sales.orders у таблиці. Речення ON вказує, що customer_id поле зв'язує дві таблиці.
Для клієнтів, які розмістили замовлення, order_id відображається таблиця.orders Однак, якщо клієнт не має замовлень, результат усе одно включає клієнта, а order_id в стовпці відображаються null-значення.
ПРАВЕ ПРИЄДНАННЯ
A RIGHT JOIN, також відомий RIGHT OUTER JOINяк , – це операція SQL, яка забезпечує включення всіх рядків із правої (або другої) таблиці до результату незалежно від того, чи є відповідний рядок у лівій (або першій) таблиці.
У випадках, коли збігів не знайдено, стовпці з лівої таблиці відображають null-значення.
Цей тип об'єднання зазвичай використовується, щоб зосередитися на даних у правій таблиці, а також додавати відомості з лівої таблиці, де б не були зв'язки.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
RIGHT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
Цей запит отримує всі рядки з sales.orders таблиці, гарантуючи, що кожне замовлення додається до результату, навіть якщо в таблиці немає зв'язаного sales.customers запису.
Речення ON визначає зв'язок між двома таблицями через customer_id стовпець. Якщо замовлення має відповідного клієнта, customer_name стовпець заповнюється customer_namenull-значеннями для незв'язаних записів.