
Это текущий макет таблицы.
- Есть 3 ноги
- У каждой ноги есть 2 точки, где
is_start
= 1 - начало ноги, а is_start
- конец ноги.
- Когда пользователь регистрируется в точке, создается запись в
points_user
.
В этом приложении у вас есть несколько ног, у которых есть 2 точки, где одна отмечает начало ноги, а другая - конец ноги. Таким образом, сумма ноги пользователя (с id = 2) (с id = 1) составляет points_users
. created
, где points_users
. leg_id
= 1 и points_users
. user_id
= 2 и points_users
. is_start
= 0 минус points_users, где is_start = 1 (а остальные параметры остаются прежними). И это только для одной ноги.
Я хотел бы сложить все разницы во времени для каждого этапа, и мы получим следующие данные:
| User.id | User.name | total_time |
| 1 | John | 129934 |
Кто-нибудь знает, как я могу присоединиться к этим таблицам и сгруппировать их по группам?
(Нет, это не домашняя работа)
Насколько я получил:
SELECT
( `end_time` - `start_time` ) AS `diff`
FROM
(
SELECT SUM(UNIX_TIMESTAMP(`p1`.`created`)) AS `start_time`
FROM `points_users` AS `pu1`
LEFT JOIN `points` AS `p1` ON `pu1`.`point_id` = `p1`.`id`
WHERE `p1`.`is_start` = 1
) AS `start_time`,
(
SELECT SUM(UNIX_TIMESTAMP(`pu2`.`created`)) AS `end_time`
FROM `points_users` AS `pu2`
LEFT JOIN `points` AS `p2` ON `pu2`.`point_id` = `p2`.`id`
WHERE `p2`.`is_start` = 0
) AS `end_time`