Inner Join — это оператор SQL, который используется для объединения строк из двух таблиц в результатах запроса, на основе совпадения значений в указанных столбцах обеих таблиц. Таким образом, INNER JOIN возвращает только те строки, которые имеют соответствующие значения в указанных столбцах обеих таблиц, исключая строки, которые не имеют совпадающих значений.
Синтаксис SQL Inner Join:
SELECT [столбцы] FROM [таблица 1] INNER JOIN [таблица 2] ON [условие соединения];
Примеры использования
Объединение таблиц по одному столбцу
Таблица 1: customers
customer_id | name |
---|---|
1 | John Doe |
2 | Jane Doe |
Таблица 2: orders
order_id | customer_id | order_date |
---|---|---|
1 | 1 | 2022-01-01 |
2 | 1 | 2022-02-01 |
3 | 2 | 2022-03-01 |
SELECT * FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id;
Результат:
customer_id | name | order_id | order_date |
---|---|---|---|
1 | John Doe | 1 | 2022-01-01 |
1 | John Doe | 2 | 2022-02-01 |
2 | Jane Doe | 3 | 2022-03-01 |
В этом примере мы объединяем две таблицы — customers и orders — по столбцу customer_id. В результате объединения мы получим только те строки, в которых значение customer_id совпадает в обеих таблицах.
Объединение таблиц по нескольким столбцам
Таблица 1: employees
employee_id | name | office_id |
---|---|---|
1 | John Doe | 1 |
2 | Jane Doe | 2 |
3 | Bob Smith | 1 |
Таблица 2: orders
order_id | employee_id | office_id | order_date |
---|---|---|---|
1 | 1 | 1 | 2022-01-01 |
2 | 1 | 1 | 2022-02-01 |
3 | 2 | 2 | 2022-03-01 |
SELECT * FROM employees INNER JOIN orders ON employees.employee_id = orders.employee_id AND employees.office_id = orders.office_id;
Результат:
employee_id | name | office_id | order_id | order_date |
---|---|---|---|---|
1 | John Doe | 1 | 1 | 2022-01-01 |
1 | John Doe | 1 | 2 | 2022-02-01 |
2 | Jane Doe | 2 | 3 | 2022-03-01 |
В этом примере мы объединяем таблицы employees и orders по двум столбцам — employee_id и office_id. Здесь мы используем оператор AND, чтобы объединить строки только в том случае, если значения обоих столбцов совпадают в обеих таблицах.