Inner Join: что это такое и как использовать в SQL?
Inner join (внутреннее объединение) – это один из видов объединения таблиц, при котором выбираются только те строки, которым соответствуют ключи в обеих таблицах. Другими словами, inner join используется для объединения двух таблиц по общему ключу, чтобы получить информацию, которая есть в обеих таблицах.
Рассмотрим пример, где есть две таблицы – "orders" и "customers" – и необходимо объединить их по полю "customer_id":
Таблица "orders"
| order_id | customer_id | order_date | order_total |
| -------- | ----------- | ---------- | ----------- |
| 1 | 1001 | 2021-01-01 | 100 |
| 2 | 1003 | 2021-01-02 | 200 |
| 3 | 1002 | 2021-01-03 | 150 |
Таблица "customers"
| customer_id | customer_name | customer_email |
| ----------- | -------------- | ----------------- |
| 1001 | John Smith | john.smith@abc.com |
| 1002 | Jane Doe | jane.doe@abc.com |
| 1003 | Peter Parker | peter.parker@xyz.com|
Для объединения этих таблиц по полю "customer_id" необходимо выполнить следующий SQL-запрос:
SELECT orders.order_id, orders.order_date, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
Этот запрос выбирает столбцы "order_id", "order_date" и "customer_name" из таблиц "orders" и "customers", соответственно, и объединяет их по значению поля "customer_id". В результате запроса получится следующая таблица:
| order_id | order_date | customer_name |
| -------- | ----------| ------------- |
| 1 | 2021-01-01| John Smith |
| 2 | 2021-01-02| Peter Parker |
| 3 | 2021-01-03| Jane Doe |
Здесь мы получили информацию о заказах и соответствующих им клиентах, которые делали эти заказы.
Кроме этого, можно добавить в запрос условия выборки, чтобы ограничить результаты по определенному условию. Например, можно выбрать только те заказы, которые были сделаны в январе 2021 года:
SELECT orders.order_id, orders.order_date, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
WHERE YEAR(orders.order_date) = 2021 AND MONTH(orders.order_date) = 1;
Этот запрос выбирает те же столбцы, что и предыдущий запрос, но ограничивает результаты только заказами, сделанными в январе 2021 года. К результатам запроса уже не будет относиться заказ с id=3, так как он был сделан в феврале 2021 года.
В заключение, inner join – это мощный инструмент работы с таблицами в SQL, который позволяет объединять данные из нескольких таблиц по общему ключу и получать более полную информацию о данных в базе данных.