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

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')


它从保存所有培训的表中获取信息,并由哪个用户参加了培训,然后从保存有关该特定培训类型的信息的表中获取额外信息。

它返回如下:

mysql - SQL内部联接计算的选择语句-LMLPHP

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

我对此有以下声明:

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


这样返回:

mysql - SQL内部联接计算的选择语句-LMLPHP

如果第二个查询返回每次训练的时间,我的问题将得到解决,因为这样我就可以在第一个查询上INNER JOIN了。但目前,它只能从WHERE子句中声明的training_id返回培训。

我希望这是有道理的。我已尽我所能来尽可能清楚地解释我的问题。如果需要任何澄清,请询问。

更新:trainingdata表的示例

mysql - SQL内部联接计算的选择语句-LMLPHP

最佳答案

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

09-25 12:46