Составление 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.