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)
- Як дізнатися кількість записів в sql-вибірці
- Як знайти помилку в sql-запиті
- Як ігнорувати вставку записи в sql.
- Установка ntp в ubuntu
- Sql-запит на вибірку з декількох таблиць
- Випадкова вибірка з бази даних
- Чутливі до регістру пошук для mysql
- Запит sql на вибірку записів
- Sql-запити для роботи з таблицями
- Group by в sql
- Об`єкт array в jаvascript
- Клас для роботи з базою даних
- Чи не працює sql-запит
- Запит sql на вибірку певного числа записів
- Оператор between в sql.
- Оптимізація запитів до mysql
- Використання union в sql
- Подвійна сортування на sql
- Структура бази даних
- Запит sql на додавання і видалення записів