Mysql трохи про join - ах

Результатом буде декартовій твір всіх таблиць, на яке можна накладати умови вибірки, використовуючи ON. USING і WHERE.

LEFT JOIN - Лівобічний зовнішнє об'едіненея

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

Наприклад, щоб отримати повний список найменувань товарів разом з їх описом, потрібно виконати наступний запит:

Оскільки для найменування Табуретка в таблиці описів немає відповідного запису, то в поле description підставився NULL. Це справедливо для всіх записів, у яких немає підходящої пари.

Якщо доповнити попередній запит умовою на перевірку неіснування опису, то можна отримати список записів, які не мають пари в таблиці описів:

По суті це і є основне призначення зовнішніх запитів - показувати розбіжність даних двох таблиць.

Крім того, при такому об'єднанні обов'язковим є умова, яке задається через ON або USING. Без нього запит буде видавати помилку.

RIGHT JOIN - Правобічне зовнішнє об'єднання

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

Як видно, тепер уже поле name містить нульові значення. Також змінився і порядок розташування стовпців.

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