Команда 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 і подивіться, чим вони відрізняються.
Запропонуйте цю статтю друзям:
Якщо Вам сподобався сайт, то розмістіть посилання на нього (у себе на сайті, на форумі, в контакті):
Вона виглядає ось так:
А як зробити сортування виведення даних? Ось в ми ж об'єднуються два запити Юніоном, а як зробити ORDER BY і за яким же запитом і як його вказати?
В самому кінці запиту його можна вказати, після всіх JOIN. Там же вказується і WHERE, і LIMIT.