Mysql трохи про join - ах
Результатом буде декартовій твір всіх таблиць, на яке можна накладати умови вибірки, використовуючи ON. USING і WHERE.
LEFT JOIN - Лівобічний зовнішнє об'едіненея
Лівосторонні об'єднання дозволяють отримувати дані з таблиці, доповнюючи їх по можливості даними з іншої таблиці.
Наприклад, щоб отримати повний список найменувань товарів разом з їх описом, потрібно виконати наступний запит:
Оскільки для найменування Табуретка в таблиці описів немає відповідного запису, то в поле description підставився NULL. Це справедливо для всіх записів, у яких немає підходящої пари.
Якщо доповнити попередній запит умовою на перевірку неіснування опису, то можна отримати список записів, які не мають пари в таблиці описів:
По суті це і є основне призначення зовнішніх запитів - показувати розбіжність даних двох таблиць.
Крім того, при такому об'єднанні обов'язковим є умова, яке задається через ON або USING. Без нього запит буде видавати помилку.
RIGHT JOIN - Правобічне зовнішнє об'єднання
Цей вид об'єднань практично нічим не відрізняється від лівостороннього об'єднання, за тим винятком, що дані беруться з другої таблиці, яка знаходиться праворуч від констркуціі JOIN. і порівнюються з даними, які знаходяться в таблиці, зазначеної перед конструкцією.
Як видно, тепер уже поле name містить нульові значення. Також змінився і порядок розташування стовпців.
Однак, у всіх випадках використання правобічних об'єднань, запит можна переписати, використовуючи лівосторонній об'єднання, просто помінявши таблиці місцями, і навпаки. Наступні два запити рівнозначні: