Sobes.tech
Назад к вопросам
Middle
17

Даны две таблицы t1 и t2. Задача выписать все виды джойнов, которые знаешь, и результат запроса select * from t1 <join> t2 on t1.t = t2.t для каждого из них. |t1.t| ------ 1 2 4 null ------ |t2.t| ------ 1 3 null null cross 1 1 - null null - INNER JOIN [phone] LEFT JOIN 1 - 1 2 - NULL 4 - NULL NULL - NULL RIGHT JOIN [phone] NULL - 3 NULL - NULL NULL - NULL FULL JOIN [phone] - NULL 4 - NULL NULL - 3 null - NULL null - NULL null - NULL

Компании, где спрашивали
КуперКупер

Ответ от нейросети

sobes.tech AI

Рассмотрим виды JOIN и результат запроса select * from t1 <join> t2 on t1.t = t2.t для таблиц:

t1.t
1
2
4
null
t2.t
1
3
null
null

CROSS JOIN — декартово произведение всех строк из t1 и t2, без условия соединения.

Результат будет 4 (строки t1) * 4 (строки t2) = 16 строк, например:

t1.t t2.t
1 1
1 3
1 null
1 null
2 1
2 3
... ...

INNER JOIN — возвращает строки, где условие t1.t = t2.t истинно.

Результат:

t1.t t2.t
1 1
null null

(так как null = null в SQL не считается равенством, но в некоторых СУБД с использованием IS NULL может быть иначе; обычно null не равен null)


LEFT JOIN — все строки из t1, и соответствующие из t2, если нет совпадения — NULL в столбцах t2:

t1.t t2.t
1 1
2 NULL
4 NULL
null NULL

RIGHT JOIN — все строки из t2, и соответствующие из t1, если нет совпадения — NULL в столбцах t1:

t1.t t2.t
1 1
NULL 3
NULL null
NULL null

FULL JOIN — объединяет LEFT и RIGHT JOIN, все строки из обеих таблиц, NULL там, где нет совпадений:

t1.t t2.t
1 1
2 NULL
4 NULL
null null
NULL 3
NULL null

Таким образом, каждый вид JOIN отличается по набору возвращаемых строк и обработке отсутствующих совпадений.