Join в sql

JOIN в SQL

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

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

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

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

Відео: JOIN - 1 частина. Оператор в мові запитів Transact-SQL

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




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

Відео: TIPOS DE CONSULTA JOINS | SELECT INNER JOIN | SQL

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 і подивіться, чим вони відрізняються.

Поділися в соціальних мережах:

Схожі
Структура бази данихСтруктура бази даних
Як зробити підписку на сайті (v2)Як зробити підписку на сайті (v2)
Запит sql для сортування результату вибіркиЗапит sql для сортування результату вибірки
Запит sql на вибірку записівЗапит sql на вибірку записів
Як дізнатися кількість записів в sql-вибірціЯк дізнатися кількість записів в sql-вибірці
Як знайти помилку в sql-запитіЯк знайти помилку в sql-запиті
Чутливі до регістру пошук для mysqlЧутливі до регістру пошук для mysql
Group by в sqlGroup by в sql
Використання union в sqlВикористання union в sql
Випадкова вибірка з бази данихВипадкова вибірка з бази даних
» » Join в sql