這是當前的表格佈局。
- 有3個支腿
- 每個腿有2點,其中
is_start
= 1是腿的開始,和is_start
是腿的端部。 - 當用戶在某個點登記時,會創建
points_user
中的條目。
在這個應用程序中,您有多個腿有2個點,其中一個標記腿的起點,另一個標記腿的末端。所以用戶(id = 2)Leg(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`
作業?聽起來像它!另外,你能指定你的表的主鍵嗎?這有助於理解如何獲得「正確」的解決方案。 – Romain
你又試過了什麼? –
@Romain:呵呵,希望我再次成爲那個年輕人。 – fortysixandtwo