# Команды JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN

Команды JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN используются для связывания таблиц по определенным полям связи.

## Синтаксис

`SELECT поля FROM имя_таблицы LEFT JOIN имя_связанной_таблицы ON условие_связи WHERE условие_выборки`

## Примеры

Все примеры будут по таблицам `countries` и `cities`, если не сказано иное.

Таблица `countries`:

id айди | name имя
--- | ---
1 | Беларусь
2 | Россия
3 | Украина

Таблица `cities`:

id айди | name имя | country_id айди страны
--- | --- | ---
1 | Минск | 1
2 | Витебск | 1
3 | Москва | 2
4 | Питер | 2
5 | Лондон | 0

## Пример . LEFT JOIN

В данном примере ...:

`SELECT cities.id as city_id, cities.name as city_name, cities.country_id as city_country_id, countries.id as country_id, countries.name as country_name FROM cities LEFT JOIN countries ON countries.id=cities.country_id`

Результат выполнения кода:

city_id айди города | city_name название города | city_country_id айди страны | country_id айди страны | country_name название страны
--- | --- | --- | --- | ---
1 | Минск | 1 | 1 | Беларусь
2 | Витебск | 1 | 1 | Беларусь
3 | Москва | 2 | 2 | Россия
4 | Питер | 2 | 2 | Россия
5 | Лондон | 0 | NULL |

## Пример . RIGHT JOIN

В данном примере ... Лондон не выберется, а Украина наоборот

`SELECT cities.id as city_id, cities.name as city_name, cities.country_id as city_country_id, countries.id as country_id, countries.name as country_name FROM cities RIGHT JOIN countries ON countries.id=cities.country_id`

Результат выполнения кода:

city_id айди города | city_name название города | city_country_id айди страны | country_id айди страны | country_name название страны
--- | --- | --- | --- | ---
1 | Минск | 1 | 1 | Беларусь
2 | Витебск | 1 | 1 | Беларусь
3 | Москва | 2 | 2 | Россия
4 | Питер | 2 | 2 | Россия
NULL | NULL | NULL | 3 | Украина

## Пример . INNER JOIN

В данном примере ... Лондон и Украина не выберется

`SELECT cities.id as city_id, cities.name as city_name, cities.country_id as city_country_id, countries.id as country_id, countries.name as country_name FROM cities INNER JOIN countries ON countries.id=cities.country_id`

Результат выполнения кода:

city_id айди города | city_name название города | city_country_id айди страны | country_id айди страны | country_name название страны
--- | --- | --- | --- | ---
1 | Минск | 1 | 1 | Беларусь
2 | Витебск | 1 | 1 | Беларусь
3 | Москва | 2 | 2 | Россия
4 | Питер | 2 | 2 | Россия

←→
↑