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

Даны две таблицы t1 и t2. Задача выписать все виды джойнов, которые знаешь, и результат запроса select * from t1 <join> t2 on t1.t = t2.t для каждого из них. |t1.t| ------ 1 2 4 null ------ |t2.t| ------ 1 3 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

1. INNER JOIN Возвращает строки, где условие соединения выполняется (t1.t = t2.t).

Результат:

t1.t t2.t
1 1

null не равен null в SQL, поэтому строки с null не соединятся.


2. LEFT JOIN (LEFT OUTER JOIN) Возвращает все строки из t1 и совпадающие из t2, если нет совпадения — NULL в столбцах t2.

Результат:

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

Строка с NULL из t1 не соединится с NULL из t2, но сама строка из t1 попадёт в результат.


3. RIGHT JOIN (RIGHT OUTER JOIN) Все строки из t2 и совпадающие из t1, иначе NULL в t1.

Результат:

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

4. FULL JOIN (FULL OUTER JOIN) Все строки из t1 и t2, совпадающие соединяются, остальные дополняются NULL.

Результат:

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

5. 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
2 NULL
2 NULL
4 1
4 3
4 NULL
4 NULL
NULL 1
NULL 3
NULL NULL
NULL NULL

Таким образом, основные виды JOIN и их поведение на данных приведены выше.