SQL Inner加入计算的select语句

时间:2016-06-01 14:08:19

标签: mysql sql inner-join

我正在开展一个项目,我必须获得有关某人进行的体育锻炼的信息。我通过以下查询获得信息。

SELECT haas2.trainings.id,
       haas2.trainings.timestamp,
       haas2.training_types.NAME,
       haas2.training_types.description,
       haas2.training_types.intensity,
       haas2.training_types.length
FROM   haas2.trainings
       INNER JOIN haas2.training_types
               ON haas2.trainings.typeid = haas2.training_types.id
WHERE  guid = (SELECT guid
               FROM   haas2.users
               WHERE  login = 'mphdijck') 

它从表格中获取包含所有培训的信息以及哪些用户获取这些信息,然后从表格中获取额外信息,其中包含有关该特定培训类型的信息。

它返回如下:

Table return

现在出现了问题,我想通过计算第一个传感器值和最后一个传感器值之间的时间差来获得训练所需的实际时间,以便我知道训练花了多长时间。

我有以下声明:

SELECT 
       Max(Unix_timestamp(timestamp)) - Min(Unix_timestamp(timestamp)) AS output,
       haas2.trainingdata.training_id
FROM   haas2.trainingdata
WHERE  training_id = 1  

返回如下:

Table return 2

如果第二个查询会返回每次训练的时间,我的问题就会解决,因为那时我可以在第一个查询中INNER JOIN。但是现在它只能从WHERE子句中声明的training_id返回训练。

我希望这是有道理的。我尽我所能尽力解释我的问题。如果需要澄清,请询问。

更新:trainingdata表的示例

Trainingdata table

1 个答案:

答案 0 :(得分:1)

如果我理解你,我认为你需要:SELECT MAX(UNIX_TIMESTAMP(timestamp)) - MIN(UNIX_TIMESTAMP(timestamp))AS输出,HAAS2.trainingdata.training_id FROM HAAS2.trainingdata GROUP BY training_id。