Топ-100Объединение таблиц в SQL с помощью JOIN - CodOrbits
LogoCodOrbits

Раздел: SQL

Раздел посвящён языку SQL: создание таблиц, запросы, фильтрация данных и работа с реляционными базами.

Все разделы
Иконка SQL

Объединение таблиц в SQL с помощью JOIN

Last updated: 8 мая 2025 г.

Далее разберем слово JOIN

У нас есть две связанные таблицы.

Как видим каждый продукт связан с категорией по внешнему ключу category_id. В category_id, как мы помним, находятся ключи из таблицы с категориями и таким образом таблицы связаны.

Так вот с помощью JOIN мы можем объединить эти две таблицы так чтобы в таблице с продуктами на место ключа в category_id становилась строка из таблицы с категориями соответствующая этому ключу.

И теперь из этой объединенной таблицы мы можем одновременно вывести аттрибуты из таблицы с продуктами и аттрибуты из таблицы с категориями.

Сделаем это запросом:

SELECT product.id,name,unit_price,category_name FROM product LEFT JOIN product_category ON product.category_id=product_category.id;

Очевидно, что JOIN очень мощная штука, так как можно работать с двумя таблицами как с одной.

JOIN может дальше содержать и все другие ключевые слова типа where, group by и having.

Например выведем только электроприборы sql командой:

SELECT product.id,name,unit_price,category_name FROM product LEFT JOIN product_category ON product.category_id=product_category.id WHERE category_name=’Electrical appliance’;

Видим, что мы применили WHERE к объединенной таблице и получили из нее только электроприборы.

И еше остался вопрос. Почему LEFT?

left означает, что мы объединяем именно левую таблицу с правой. Левая это та, которая стоит слева от LEFT JOIN, а правая, которая справа от LEFT JOIN.

Почему это так важно, что именно левую с правой? А то, что в результирующей объединенной таблице строки из левой таблицы будут обязательно все до последней, а из правой только те строки, которым нашлась пара в левой таблице.

Можно вместо left поставить right, тогда объединяем правую с левой и всё будет наоборот.

Также можно вообще без left и Right. Это называется Inner Join. Тогда в результирующей объединенной таблице будут только те строки из обеих таблиц, у которых есть пара. То есть если какой-то из строк в первой талице нет пары в другой или какой-то из строк во второй таблице нет пары в первой, то они в результирующую таблицу не попадут.

Также результат какого-либо запроса можно отсортировать с помощью ORDER BY.

Например давайте отсортируем строки результата запроса ниже так чтобы они располагались в порядке уменьшения цены товара.

SELECT product.id,name,unit_price,category_name FROM product LEFT JOIN product_category ON product.category_id=product_category.id WHERE category_name=’Electrical appliance’;

Как видим, цена уменьшается сверху вниз. То есть сортировка строк происходит. DESC в конце значит от большего к меньшему.

Search Icon

Все. Самое главное по SQL разобрали.

Также еще нужно знать, что такое хранимые процедуры и транзакции, но их мы разберем когда будем учить JDBC и Hibernate


Следующие уроки

Основы JDBC в Java

15
мин.

Similar Articles Icon
Divider

Транзакции в SQL и JDBC

13
мин.

Similar Articles Icon
Divider

Savepoint в JDBC транзакциях

13
мин.

Similar Articles Icon