Как правильно составить запрс с двумя INNER JOIN?

Составление SQL запроса с двумя INNER JOIN в MySQL достаточно просто, но требует определенных шагов для правильного написания запроса. INNER JOIN используется для объединения нескольких таблиц на основе значения общего столбца.

Прежде чем перейти к составлению запроса, давайте рассмотрим пример схемы базы данных, с которой мы будем работать:

Таблица "users":

+----+----------+----------+-------------+
| ID | Имя      | Фамилия  | Дата рождения|
+----+----------+----------+-------------+
| 1  | John     | Smith    | 1980-05-01  |
| 2  | David    | Johnson  | 1985-10-15  |
| 3  | Sarah    | Anderson | 1992-03-25  |
+----+----------+----------+-------------+

Таблица "orders":

+----+----------+------------------------+
| ID | User_ID  | Название продукта       |
+----+----------+------------------------+
| 1  | 1        | iPhone 12               |
| 2  | 1        | MacBook Pro             |
| 3  | 3        | Apple Watch Series 6    |
| 4  | 2        | Samsung Galaxy S21      |
+----+----------+------------------------+

Таблица "payments":

+----+-----------+--------+--------+
| ID | Order_ID  | Сумма  | Дата   |
+----+-----------+--------+--------+
| 1  | 1         | 1000   | 2021-01-05 |
| 2  | 2         | 1500   | 2021-02-15 |
| 3  | 3         | 800    | 2021-03-20 |
| 4  | 4         | 1200   | 2021-04-10 |
+----+-----------+--------+--------+

Нам нужно получить информацию о пользователях, сделавших заказы, а также связанной с ними информации о заказах и платежах. Для решения этой задачи мы используем два оператора INNER JOIN.

Вот пример запроса:

SELECT users.ID, users.Имя, users.Фамилия, orders.ID, orders.Название_продукта, payments.Сумма, payments.Дата
FROM users
INNER JOIN orders ON users.ID = orders.User_ID
INNER JOIN payments ON orders.ID = payments.Order_ID;

В результате мы получим следующую таблицу:

+----+----------+----------+-------------+----+------------------------+------+------------+
| ID | Имя      | Фамилия  | Дата рождения| ID | Название_продукта       | Сумма| Дата       |
+----+----------+----------+-------------+----+------------------------+------+------------+
| 1  | John     | Smith    | 1980-05-01  | 1  | iPhone 12               | 1000 | 2021-01-05 |
| 1  | John     | Smith    | 1980-05-01  | 2  | MacBook Pro             | 1500 | 2021-02-15 |
| 3  | Sarah    | Anderson | 1992-03-25  | 3  | Apple Watch Series 6    | 800  | 2021-03-20 |
| 2  | David    | Johnson  | 1985-10-15  | 4  | Samsung Galaxy S21      | 1200 | 2021-04-10 |
+----+----------+----------+-------------+----+------------------------+------+------------+

В этом запросе мы использовали два оператора INNER JOIN: первый объединял таблицы "users" и "orders" на основе значения столбца "User_ID", а второй объединял таблицы "orders" и "payments" на основе значения столбца "Order_ID". Результатом является таблица, содержащая информацию о пользователях, заказах и платежах.

Надеюсь, этот ответ помог вам разобраться в составлении запроса с двумя INNER JOIN в MySQL.