Почти каждая задача в SQL решается с использованием нескольких таблиц. Необходимо уметь объединять данные из разных таблиц по ключу. Конструкция JOIN
нужна как раз для этой цели.
Рассмотрим соединение таблиц с помощью JOIN
.
В таблице supermarket_sales
хранятся данные продаж, продукт представлен в виде идентификатора ProductID
.
Чтобы понять, что за товар мы продаем, нужно добавить обычное название продукта, которое хранится в таблице supermarket_products
в колонке ProductName
.
Общим ключом у двух таблиц является столбец ProductID
. Выведем: день продаж, количество купленного товара из первой таблицы и название товара, цену из второй таблицы.
Вот так будет выглядеть запрос:
select
sales.Date,
sales.ProductID,
product.ProductName,
product.ProductCost,
sales.Quantity
from
supermarket_sales as sales
join
supermarket_products as product on sales.ProductId = product.ProductId -- инфо о продуктах
limit 10
Рассмотрим запрос подробнее:
FROM
указываем первую таблицу.JOIN
всегда идет после FROM
.ProductID
), то интерпретатор не поймет, какую колонку мы хотим вытащить. Поэтому в SELECT
мы можем записать колонку только с названием таблицы перед колонкой. Таблицы обычно имеют длинные название, поэтому мы их сокращаем через AS
.ProductName
это какой-то ProductID
, и для того, чтобы в таблицу с продажами подтянуть корректное название товара, нам нужно, чтобы ProductID
из двух таблиц был равен.
ProductId
= ProductId
, потому что для интерпретатора непонятно, из какой таблицы мы берем эту колонку. Поэтому указываем короткое название таблицы как on sales.ProductId = product.ProductId