Наочне пояснення принципу об'єднання таблиць в mysql - сергей червач

Головна / Чи не головна / Наочне пояснення принципу об'єднання таблиць в MySQL

При розробці веб-проектів за участю бази даних нам часто необхідно в запитах об'єднувати таблиці бази, щоб отримати необхідні дані.

Попередження: в статті в умови об'єднання таблиць використовується як ON, так і USING, для різноманітності. Нагадую, що якщо стовпці, по яким відбувається об'єднання, мають однакові імена, то необхідно використовувати USING ( `імя_столбца`), в іншому випадку використовується ON` TableA`.`імя_столбца_із_TableA` = `TableB`.`імя_столбца_із_TableB`

Отже, припустимо, що у нас є два столи. Стіл А (TableA) зліва, а стіл Б (TableB) праворуч. Ми заселимо кожен чотирма персонажами, імена яких можуть бути присутніми на обох столах.

RIGHT JOIN

NATURAL JOIN

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

В цьому випадку СУБД вибирає для об'єднання таблиць стовпчики id і name, так як вони присутні в обох таблицях і перетворює вихідний запит в запит наступного виду:

Але так як у нас немає записів з однаковим id і name одночасно в обох таблицях, то запит поверне порожній результат.

Якщо ж зробити керуючої ліву таблицю і змінити запит:

Такий запит наводиться СУБД до наступного:

Схожі статті