Back to all questions

Як працює CROSS JOIN?

Devs Hive

Devs Hive

Seen on interview: 1 user

CROSS JOIN - це тип JOIN, який повертає всі можливі комбінації рядків з двох таблиць. Тобто кожен рядок з першої таблиці буде поєднаний з кожним рядком з другої таблиці. Через це кількість рядків у результаті дорівнює: кількість рядків першої таблиці × кількість рядків другої таблиці.

Розберемо приклад

Ми маємо дві таблиці: users і plans. Наша задача полягає в тому, щоб отримати всі можливі пари користувачів і тарифів. Для цього ми будемо використовувати CROSS JOIN.

-- users
id | name
------------
1 | Alice
2 | Bob


-- plansœ
id | plan_name
-------------------
1 | Basic
2 | Premium
3 | Enterprise

Запит буде мати наступний вигляд. Давайте розберемо його детальніше:

-- Вибираємо стовпці, які хочемо бачити в результаті:
-- name - з таблиці users
-- plan_name - з таблиці plans
SELECT
users.name,
plans.plan_name
FROM
users
-- Робимо CROSS JOIN - тобто беремо кожен рядок з таблиці users
-- і поєднуємо його з КОЖНИМ рядком з таблиці plans
CROSS JOIN
plans;

В результаті виконання запиту, ми отримаємо такий результат: Alice поєдналася з усіма тарифами і так само Bob поєднався з усіма можливими тарифами.

name | plan_name
-------------------------
Alice | Basic
Alice | Premium
Alice | Enterprise
Bob | Basic
Bob | Premium
Bob | Enterprise

Важливо пам’ятати

CROSS JOIN може дуже швидко створити велику кількість рядків. Наприклад, якщо в першій таблиці 100 рядків, а в другій 200, то результат буде містити вже 20 000 рядків. Тому його потрібно використовувати обережно.

Seen on interview?

Related Questions

Comments (0)

Sign in to leave a comment

No comments yet. Be the first!