Далее будут представлены возможности использования JOIN
, которые достаточно логичны, но не всегда очевидны, когда мы первый раз изучаем SQL.
1. В запросе мы можем соединять сколько угодно таблиц друг с другом:
select
t1.*,
t2.*,
t3.*
from
table_1 as t1
join
table_2 as t2 on t1.column1 = t2.column
left join
table_3 as t3 on t3.column1 = t2.column
В этот момент соединения всех предыдущие таблицы образуют некую большую таблицу (table1
и table2
), которая, в свою очередь, соединяется с последующей таблицей (table3
).
2. Можно присоединить таблицу к самой себе, только нужно задать ей другое имя:
select
t1.*,
t2.*,
from
table_1 as t1
join
table_1 as t2 on t1.column1 = t2.column
Соединять таблицы также можно по нескольким ключам через AND
:
select
t1.*,
t2.*,
from
table_1 as t1
join
table_1 as t2
on t1.column1 = t2.colum1 and t1.column2 = t2.column2
А еще таблицы можно соединять не только по равным ключам, но и через какое-то условие. Допустим, мы хотим соединить две таблицы table_1
и table_2
с помощью ключа t1.column1 = t2.colum1
, но при условии что t1.column2 > t2.column2
:
select
t1.*,
t2.*,
from
table_1 as t1
join
table_1 as t2
on t1.column1 = t2.colum1 and t1.column2 > t2.column2
Тут может быть сравнение колонок или сравнение колонки с каким-то фиксированным значением.
Условие можно написать и через WHERE
, использование его в JOIN
отфильрует значения до создания “большой таблицы” и значительно ускорит выполнения SQL-запроса. Если у вас возникли трудности с пониманием этого пункта, прочитайте еще раз тему “Выполнение SQL-запроса”.