Команды 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 Россия