Найти в Дзене
Sever

SQL JOINS

Оглавление

Увеличивает выходные данные в ширину (в отличии от операций UNION/UNION ALL)

Для примера будем использовать 2 таблицы table1 и table2:

Table1
Table1
Table2
Table2

INNER JOIN

Пример

SELECT *

FROM Table1 t1

INNER JOIN Table2 t2 ON t1.a = t2.b

SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ON t1.a = t2.b
SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ON t1.a = t2.b

LEFT JOIN

Пример

SELECT *

FROM Table1 t1

LEFT JOIN Table2 t2 ON t1.a = t2.b

SELECT * FROM Table1 t1 LEFT JOIN Table2 t2  ON t1.a = t2.b
SELECT * FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.a = t2.b

RIGHT JOIN

Пример

SELECT *

FROM Table1 t1

RIGHT JOIN Table2 t2 ON t1.a = t2.b

SELECT * FROM Table1 t1 RIGHT JOIN Table2 t2  ON t1.a = t2.b
SELECT * FROM Table1 t1 RIGHT JOIN Table2 t2 ON t1.a = t2.b

FULL JOIN

Пример

SELECT *

FROM Table1 t1

FULL JOIN Table2 t2 ON t1.a = t2.b

SELECT * FROM Table1 t1 FULL JOIN Table2 t2  ON t1.a = t2.b
SELECT * FROM Table1 t1 FULL JOIN Table2 t2 ON t1.a = t2.b

CROSS JOIN

Пример

SELECT *

FROM Table1 t1

CROSS JOIN Table2 t2

SELECT * FROM Table1 t1 CROSS JOIN Table2 t2
SELECT * FROM Table1 t1 CROSS JOIN Table2 t2

Частые вопросы на собеседовании

Какое максимальное и минимальное количество записей будет при каждом JOIN (INNER, LEFT, RIGHT, CROSS, FULL).

Существует 2 таблицы в обеих - N строк.

INNER: минимальное - 0 (все значения разные), максимальное - N*N (в первой и во второй таблице все записи одинаковые);

LEFT: минимальное - N (все значения разные), максимальное - N*N (в первой и во второй таблице все записи одинаковые);

RIGHT: минимальное - N (все значения разные), максимальное - N*N (в первой и во второй таблице все записи одинаковые);

CROSS: максимальное и минимальное количество - N*N (так как это декартово произведение);

FULL : минимальное количество - N (в случае, если одна строка уникальна в своей таблице, а вторая совпадает с первой таблицей), максимально - N*N (в первой и во второй таблице все записи одинаковые)

Статья будет дополняться. Рассмотри соединение 3 таблиц и подробнее распишу что означает каждый Джоин.

Существуют также : SELF JOIN, NATURAL JOIUN, CROSS APPLY JOIN, OUTER APPLY JOIN (Они используются реже)