2017-07-06 3 views
0

私は2つのテーブルを持っています。構成とデータ。 Configテーブルには、私が "定義済みのポイント"と呼ぶものを定義する情報があります。列はconfigId、machineId、iotype、ioid、subfieldおよびpredeftypeです。 configIdによってリンクされたconfigテーブル内のすべてのアイテムのすべてのデータを含む2番目のテーブルがあります。データテーブルには、configId、タイムスタンプ、値が含まれています。SQLクエリの支援 - データクエリのループ

この特定の定義済みポイントの最小タイムスタンプとこの特定の定義済みポイントの最大タイムスタンプとなる結果に、2つの新しい列を含むconfigテーブルから各行を戻そうとしています。

擬似コードは、サブクエリが複数の値を返します

select a.*, min(b.timestamp), max(b.timestamp) from TrendConfig a join TrendData b on a.configId = b.configId where configId = (select configId from TrendConfig) 

だろう。

Table structure image

これを定式化する方法任意のアイデア?

+0

でa.configId = b.configIdグループにTrendData bを参加TrendConfigから最大(b.timestamp)、。*、分(b.timestamp)を選択正確な答えを与えることができます。これはジョインまたは相関サブクエリを介して実行される可能性が最も高いです。 –

+0

あなたが参加について話しているように聞こえる - https://www.w3schools.com/sql/sql_join.asp –

+0

Tim、私は構造のイメージを含んでいました。 – Tacitus86

答えて

0

内部結合を試してください。

*、b.min(タイムスタンプ)を選択し、b.max(タイムスタンプ) インナーa.configId = b.configID

にデータb の参加をconfigのから。
+0

これはmin(b.timestamp)とmax(b.timestamp)で実行されましたが、Configテーブルの各ポイントではなく、すべてのポイントの最大/最小値を取得するだけなので、単一の結果を返しました。 – Tacitus86