Join в sql

Join в sql

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

Існує кілька варіантів запиту JOIN. почнемо ми з самого популярного, а саме INNER JOIN:

SELECT * FROM `users` INNER JOIN` subscribers` ON ​​`users`.`email` =` subscribers`.`email`

Подібним запитом я витягнув все записи, де в вибірку потраплять всі користувачі сайту, які також є передплатниками.

Особливістю INNER JOIN є те, що в результат входять всі поля з усіма значеннями. Кількість записів рівно стільки, скільки задовольнили умов у обох таблиць.

Тепер давайте перейдемо до наступного різновиду JOIN. а точніше до LEFT OUTER JOIN:

SELECT * FROM `users` LEFT OUTER JOIN` subscribers` ON ​​`users`.`email` =` subscribers`.`email`

Особливістю даного запиту є те, що результат вибірки містить записи, що задовольняють лівої таблиці. Якщо вони ще й задовольняють умовам правої таблиці, то це ідентично INNER JOIN. інакше замість значень в правій таблиці буде NULL.

Тепер перейдемо до RIGHT OUTER JOIN:

SELECT * FROM `users` RIGHT OUTER JOIN` subscribers` ON ​​`users`.`email` =` subscribers`.`email`

Дзеркальна протилежність LEFT OUTER JOIN. тепер NULL присутні в першій таблиці, тобто зліва.

І, нарешті, останній тип JOIN - це CROSS JOIN:

SELECT * FROM `users` CROSS JOIN` subscribers`

Даний запит видає всілякі поєднання двох таблиць. В даному запиті результуюче число записів - це множення кількості записів в обох таблицях.

Я ще не розповів про FULL OUTER JOIN. яка не підтримується MySQL. Але, на мій погляд, він і не потрібен. Його особливістю є те, що він виводить рядок, в якій є хоча б один збіг з будь-якої з таблиць. Відповідно, в іншій таблиці (в якій немає збігу з умовою) йдуть NULL. Фактично, це об'єднання LEFT OUTER JOIN і RIGHT OUTER JOIN:

SELECT * FROM `users` LEFT OUTER JOIN` subscribers` ON ​​`users`.`email` =` subscribers`.`email` UNION SELECT * FROM `users` RIGHT OUTER JOIN` subscribers` ON ​​`users`.`email` = `subscribers`.`email`

Ось я і розповів про всі різновиди JOIN в SQL. Варто зазначити, що тема дуже складна, і її рідко розуміють з першого разу. Тому я Вам рекомендую обов'язково подивитися, як працюють дані запити на прикладі Ваших якихось таблиць (якщо їх немає, то створіть). Перевірте всі різновиди JOIN і подивіться, чим вони відрізняються.

Запропонуйте цю статтю друзям:

Якщо Вам сподобався сайт, то розмістіть посилання на нього (у себе на сайті, на форумі, в контакті):

Вона виглядає ось так:

  • BB-код посилання для форумів (наприклад, можете поставити її в підписі):
  • А як зробити сортування виведення даних? Ось в ми ж об'єднуються два запити Юніоном, а як зробити ORDER BY і за яким же запитом і як його вказати?

    В самому кінці запиту його можна вказати, після всіх JOIN. Там же вказується і WHERE, і LIMIT.