4

立ち往生しています...列「値」と「データタイプ」を持つ「データ」テーブルには、エンジン負荷と車両速度が入力され、各レコードには日付、時刻、緯度、経度がスタンプされます。車両の移動中 (速度 > 0 など) に 10% を超えるエンジン負荷を照会したいと考えています。エンジン負荷を選択するクエリを作成し、車両速度を選択するクエリを作成できますが、エンジン負荷を選択するクエリを作成するにはどうすればよいですか?は同じ?

このクエリは機能しませんが、私がやろうとしていることの概要を提供します。クエリの作成を手伝ってくれる人はいますか?

テーブル
TName: データ
PK データキー
    価値
fk1 データイベントキー
fk2 datatypenamekey

TName: データ型名
PK datatypenamekey
   データ型名

TName: データイベント
PK データイベントキー
   日付時刻
   緯度
   長いです
SELECT 
   d1.datetime 
FROM 
    (data INNER JOIN datatypename ON data.datatypenamekey = datatypename.datatypenamekey    
    INNER JOIN dataevent ON dataevent.dataeventkey = data.dataeventkey) d1  
WHERE 
    ( d1.datatypename = "Engine Load [%]" AND d1.value > 10 )

 INNER JOIN

SELECT 
    d2.datetime  
FROM 
    (data INNER JOIN datatypename ON data.datatypenamekey = datatypename.datatypenamekey  
    INNER JOIN dataevent ON dataevent.dataeventkey = data.dataeventkey) d2  
WHERE 
    ( d2.datatypename = "Vehicle Speed [mph]" AND d2.value > 0 ) 

    ON d1.datetime = d2.datetime
4

1 に答える 1

9

100% 理解しているとは言えませんが、同じテーブルの 2 つのインスタンスを参照する必要があるだけだと思います。SQLに基づいていくつかの仮定を立てていますが、ここで試してみてください:

SELECT 
    engineLoad.dateTime
FROM
    (
    SELECT 
       d.datakey,
       de.datetime        
    FROM 
        data d
        INNER JOIN datatypename dt ON data.datatypenamekey = dt.datatypenamekey    
        INNER JOIN dataevent de ON de.dataeventkey = d.dataeventkey  
    WHERE 
        d.value > 10 AND
        dt.datatypename = "Engine Load [%]"
    ) engineLoad
    INNER JOIN
    (
    SELECT 
       d.datakey,
       de.datetime        
    FROM 
        data d
        INNER JOIN datatypename dt ON data.datatypenamekey = dt.datatypenamekey    
        INNER JOIN dataevent de ON de.dataeventkey = d.dataeventkey  
    WHERE 
        d.value > 0  AND
        dt.datatypename = "Vehicle Speed [mph]" 
    ) vehicleSpeed 
        ON engineLoad.dataKey = vehicleSpeed.dataKey <==might need to remove this line
           AND engineLoad.datetime = vehicleSpeed.datetime

編集 datatypename も 2 回参照する必要があるように見えますか? 上記を編集したので、もう一度やり直してください。

于 2013-04-02T15:14:02.133 に答える