2013-04-02 113 views
3

我卡住了......'列'值'和'數據類型'的'數據'表中填充了引擎負載和車輛速度,並且每條記錄都標有日期,時間,拉特,長。我想在車輛移動時(例如,速度> 0)查詢發動機負載超過10%。我可以創建一個查詢來選擇發動機負荷,我可以創建一個查詢來選擇車輛速度,但是如果創建查詢來選擇發動機負荷大於10%並且車輛正在移動他們的日期,時間lat和長時間是平等的嗎?如何在同一張表上內部連接兩個選擇查詢

此查詢不起作用,但它提供了我正在嘗試做的事情。任何人都可以幫我創建一個查詢嗎?

 
tables 
TName: data 
PK datakey 
    value 
fk1 dataeventkey 
fk2 datatypenamekey 

TName: datatypename 
PK datatypenamekey 
    datatypename 

TName: dataevent 
PK dataeventkey 
    datetime 
    lat 
    long 
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 
+0

您是否更清楚地說明哪些列在哪些表中? –

回答

5

我敢肯定不是100%我理解,但我認爲你只需要引用同一個表的兩個實例。

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兩倍,以及:使基於SQL的一些假設,但在這裏給它一個鏡頭的種類?編輯上述,所以再試一次。

+0

是的,我想你明白我在做什麼...這是從sqlite/sqlite4java的響應:[1] DB [3] prepare()SELECT d1.datetime FROM data INNER JOIN datatypename ON data.datatypenamekey = datatypename .datatypenamekey INNER JOIN dataevent d1 ON d1.dataeventkey = data.dataeventkey INNER JOIN dataevent d2 ON d2.dataeventkey = data.dataeventkey AND d1.datetime = d2.datetime WHERE d1.datatypename =「Engine Load [%]」AND d1.value > 10 d2.datatypename =「Vehicle Speed [mph]」AND d2.value> 0 [near「d2」:syntax error] – TheChrisONeil

+0

我更新了SQL(缺少「AND」)。再試一次? –

+0

我將我的ERD添加到原始問題中。新的響應:[1] DB [3] prepare()SELECT d1.datetime FROM data INNER JOIN datatypename ON data.datatypenamekey = datatypename.datatypenamekey INNER JOIN dataevent d1 ON d1.dataeventkey = data.dataeventkey INNER JOIN dataevent d2 ON d2。 dataeventkey = data.dataeventkey AND d1.datetime = d2.datetime WHERE d1.datatypename =「Engine Load [%]」AND d1.value> 10 AND d2.datatypename =「Vehicle Speed [mph]」AND d2.value> 0 [沒有這樣的列:d1.datatypename] – TheChrisONeil

相關問題