4

我被卡住了...一个带有“值”和“数据类型”列的“数据”表填充了发动机负载和车速,每条记录都标有日期、时间、纬度、经度。我想在车辆行驶时查询发动机负载超过 10%(例如速度 > 0)。我可以创建一个查询来选择发动机负载,我可以创建一个查询来选择车速,但是当 > 10% 并且车辆在其日期、时间纬度和经度的位置移动时,我如何创建一个查询来选择发动机负载是平等的吗?

此查询不起作用,但它提供了我正在尝试做的事情的概要。谁能帮我创建一个查询?

表
T名称:数据
PK数据密钥
    价值
fk1 数据事件键
fk2 数据类型名称键

TName:数据类型名称
PK 数据类型名称键
   数据类型名称

TName:数据事件
PK数据eventkey
   约会时间
   纬度
   长
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% 确定我理解,但我认为您只需要引用同一张表的两个实例。根据您的 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 两次?编辑了上面,所以再试一次。

于 2013-04-02T15:14:02.133 回答