Команда JOIN
Команда JOIN используется для объединения строк
из двух или более таблиц на основе логической связи между ними.
Связь выполняется через условие, указанное после ключевого слова ON.
Обычно связываются первичный ключ одной таблицы и внешний ключ другой таблицы.
При выполнении JOIN база данных сравнивает значения указанных столбцов
в обеих таблицах и объединяет только те строки, где значения совпадают.
Если соответствие найдено — строки объединяются в одну.
Если соответствия нет — такая строка не попадёт в результат.
По умолчанию команда JOIN работает как
INNER JOIN
и возвращает только совпадающие записи.
Синтаксис
SELECT table1.column_list, table2.column_list
FROM table1
JOIN table2
ON table1.column_name = table2.column_name
Таблицы для примеров
| id | name |
|---|---|
| 1 | Russia |
| 2 | Belarus |
| 3 | Kazakhstan |
| id | name | country_id |
|---|---|---|
| 1 | Moscow | 1 |
| 2 | Minsk | 2 |
| 3 | Astana | 3 |
| 4 | Unknown City | 0 |
Пример
Давайте свяжем таблицы cities и countries по полям country_id и id, чтобы получить название города и соответствующей страны:
SELECT
cities.name,
countries.name
FROM cities
JOIN countries
ON cities.country_id = countries.id
Результат выполнения кода:
| name | name |
|---|---|
| Moscow | Russia |
| Minsk | Belarus |
| Astana | Kazakhstan |
Пример
Давайте выберем идентификатор города, название города и название страны, чтобы увидеть объединённые данные обеих таблиц:
SELECT
cities.id,
cities.name,
countries.name
FROM cities
JOIN countries
ON countries.id = cities.country_id
Результат выполнения кода:
| id | name | name |
|---|---|---|
| 1 | Moscow | Russia |
| 2 | Minsk | Belarus |
| 3 | Astana | Kazakhstan |
Пример
Давайте выберем только города, которые принадлежат стране Belarus, используя условие после соединения таблиц:
SELECT
cities.name,
countries.name
FROM cities
JOIN countries
ON cities.country_id = countries.id
WHERE countries.name = 'Belarus'
Результат выполнения кода:
| name | name |
|---|---|
| Minsk | Belarus |
Смотрите также
-
INNER JOIN,
которая соединяет только совпадающие строки -
LEFT JOIN,
которая сохраняет все строки левой таблицы -
RIGHT JOIN,
которая сохраняет все строки правой таблицы