2016-06-01 1 views
0

Я работаю над проектом, где мне нужно получить информацию о физическом упражнении, которое кто-то взял. Я получаю информацию со следующим запросом.SQL Внутреннее присоединение к выборке оператора вычисления

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

Моя проблема была бы решена, если второй запрос будет возвращать время для каждой тренировки, потому что то я мог бы Вставить его в первый запрос. Но так как это сейчас, он может только вернуть обучение из Training_id, объявленного в предложении WHERE.

Надеюсь, это имеет смысл. Я сделал все возможное, чтобы объяснить свою проблему как можно яснее. Если какие-либо разъяснения необходимы, пожалуйста, спросите.

Update: Пример таблицы trainingdata

Trainingdata table

+0

Если вам нравится, рассмотрите следующий простой двухэтапный курс действий: 1. Если вы еще этого не сделали, предоставьте правильные инструкции CREATE и INSERT (и/или sqlfiddle), чтобы мы могли легче реплицировать проблему , 2. Если вы еще этого не сделали, укажите желаемый набор результатов, соответствующий информации, представленной на шаге 1. – Strawberry

+0

@ Raspberryano точно, это то, что мне было нужно. Спасибо. –

+0

Спасибо большое Милан ван Дейк – Raspberryano

ответ

1

Если я вас понимаю, я думаю, что вам нужно: SELECT MAX (UNIX_TIMESTAMP (метка времени)) - MIN (UNIX_TIMESTAMP (метка времени)) AS выход, HAAS2 .trainingdata.training_id FROM HAAS2.trainingdata GROUP BY training_id.