2016-06-01 11 views
0

私は誰かが取った物理的な練習に関する情報を入手する必要があるプロジェクトに取り組んでいます。次のクエリで情報を取得します。SQLインナーで計算のselectステートメントに参加する

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 

これは次のように返します:2番目のクエリがあるため、すべての訓練のための時間を返すならば私の問題が解決されるだろう

Table return 2

それから最初のクエリでINNER JOINに参加できます。しかし、今のようにWHERE句で宣言されたtraining_idからトレーニングを返すことしかできません。

これは意味があると思います。私はできる限り私の問題を明確に説明するために最善を尽くしました。何か明確化が必要な場合は質問してください。

更新:trainingdataテーブルの例

Trainingdata table

+0

この2つの簡単な手順を実行することをお勧めします。1.まだ実行していない場合は、適切なCREATE文とINSERT文(および/またはsqlfiddle)を指定して、問題をより簡単に再現できるようにします。 2.まだ実行していない場合は、手順1で提供された情報に対応する望ましい結果セットを提供してください。 – Strawberry

+0

@Raspberryano正確に、これは私が必要としていたものです。ありがとうございました。 –

+0

ありがとうミラン・バン・ディジック – Raspberryano

答えて

1

私はあなたを理解していれば、私はあなたが必要だと思う:MAX(UNIX_TIMESTAMP(タイムスタンプ))SELECT - 、出力としてHAAS2をMIN(UNIX_TIMESTAMP(タイムスタンプ)) .trainingdata.training_idからHAAS2.trainingdata GROUP BY training_id。

関連する問題