Работа оператора JOIN подобна операциям над множествами в реляционной алгебре.
Допустим, у нас есть две таблицы: коты и конфеты. Каждая запись в таблице котов
содержит идентификатор принадлежащей ему конфеты candy_id.
Таблица cat
id |
name |
candy_id |
1 |
Мия |
3 |
2 |
Брат Кота-астронавта |
null |
3 |
Кот-астронавт |
2 |
Таблица candy
id |
name |
1 |
Плутоновое Пралине |
2 |
Взрывная Комета |
3 |
Вселенская Гармония |
null — специальное значение, обозначающее отсутствие данных, у кота с идентификатором
2 нет конфеты.
Сформируем SQL запрос объединения данных таблиц cat и candy на условии равенства
идентификатора конфеты (candy_id = id) в обеих таблицах.
SELECT cat.name, candy.name -- выбрать имена котов и имена конфет
FROM cat -- из таблицы cat
JOIN candy ON cat.candy_id = candy.id; -- объединить с таблицей candy по равенству идентификатора конфеты
Результатом выполнения запроса будет объединенная таблица со склеенными записями из таблиц
cat и candy.
Объединенная таблица cat и candy
cat.name |
candy.name |
Мия |
Вселенская Гармония |
Кот-астронавт |
Взрывная Комета |
INNER JOIN используется по умолчанию, если не указывать дополнительные ключевые слова
JOIN = INNER JOIN