Join / Sql / database
JOINS
author
id | name |
---|---|
1 | Вася |
2 | Коля |
3 | Петя |
util
id | author_id | name |
---|---|---|
1 | 1 | Вася Мега продукт |
2 | 0 | Крутая, но неизвестная утилита |
SQL INNER / INNER JOIN - естественное или внутреннее соединение
Возвращает записи, у которых есть соответствующие записи в обеих таблицах.
-- Выводим все поля SELECT * -- Указываем таблицу авторов FROM author -- Соединяем с таблицей программ INNER JOIN util -- Указываем условие ON author.id = util.author_id
id | name | id | author_id | name |
---|---|---|---|---|
1 | Вася | 1 | 1 | Вася Мега продукт |
LEFT JOIN
Возвращает все записи из левой таблицы и соответствующие записи из правой таблицы. Если соответствия нет, возвращает NULL для правой таблицы.
-- Выводим все поля SELECT * -- Указываем таблицу авторов FROM author -- Соединяем с таблицей программ LEFT JOIN util -- Указываем условие ON author.id = util.author_id
id | name | id | author_id | name |
---|---|---|---|---|
1 | Вася | 1 | 1 | Вася Мега продукт |
2 | Коля | NULL | NULL | NULL |
3 | Петя | NULL | NULL | NULL |
RIGHT JOIN
Возвращает все записи из правой таблицы и соответствующие записи из левой таблицы. Если соответствия нет, возвращает NULL для левой таблицы.
-- Выводим все поля SELECT * -- Указываем таблицу авторов FROM author -- Соединяем с таблицей программ RIGHT JOIN util -- Указываем условие ON author.id = util.author_id
id | name | id | author_id | name |
---|---|---|---|---|
1 | Вася | 1 | 1 | Вася Мега продукт |
NULL | NULL | 2 | 0 | Крутая, но неизвестная утилита |
LEFT OUTER JOIN - левое внешнее соединение
Возвращает все записи из левой таблицы и соответствующие записи из правой таблицы. Если соответствия нет, возвращает NULL для правой таблицы.
RIGHT OUTER JOIN - правое внешнее соединение
Возвращает все записи из правой таблицы и соответствующие записи из левой таблицы. Если соответствия нет, возвращает NULL для левой таблицы.
FULL JOIN - полное внешнее соединение
Возвращает все записи, когда есть соответствие в одной из таблиц.
CROSS JOIN - перекрестное или декартово соединение
Выполняет декартово произведение двух таблиц, объединяя каждую строку первой таблицы с каждой строкой второй таблицы.