select Tag.TagName, Tag.theTime  
 from Tag,TagInfo
 where Tag.TagName=TagInfo.TangName 
        and TagInfo.ReactorName=MyReactorName

解决方案 »

  1.   

    select a.*,b.theTime,b.Value from (select m.*,n.TagName
    from ReactorInfo m,TagName n where m.ReactorName=n.ReactorName) a,Tag b
    where a.TagName=b.TagName
      

  2.   

    谢谢支持,但问题没有解决。
    这个语句的难度在于要在多个表中取数据。因为每个TagName有一个表。
    请继续。
      

  3.   

    例如对于ReactorName='T101'这一纪录:
    在TagInfo中有三条对应纪录:
         TagName     ReactorName
    1.   TI1101      T101
    2.   TI1102      T101
    3    TI1103      T101
    则数据库中对应有三个表:TI1101,TI1102,TI1103。
    这三个表的结构是相同的,均包括两个字段:
         theTime(DateTime) keyword 
         Value(float)
    以TI1101为例,其纪录如下:
          TheTime         Value
       2001/10/8 10:10     122.1
       2001/10/8 10:15     123.3
       2001/10/8 10:20     122.9
       2001/10/8 10:25     123.1
       2001/10/8 10:30     122.7我想得到的结果是这样的:
         TagName     theValue(时间最新的一行)
         TI1101       122.7
         TI1102       10.987
         TI1103       586.98请大家想想办法。分不够可以再加。
        
      

  4.   

    获得表名,用union根据表名拼sql语句实现:
    select max(?) from table1 union select max(?) from table2....
      

  5.   

    使用动态SQL,From后面的表名是不固定的。
    SELECT TOP 1 thevalue,:tablename1 FROM :tablename1 ORDER BY TheTime
    UNION ALL
    ...
      

  6.   

    根据TagInfo表中的记录数进行循环Union~~~Select TagName,
    (Select Value From :TableName Where TheTime=(Select Max(TheTime) From :TableName)) As TheValue
    From TagInfo Order By TagNameUnion........参数:TableName就是TagInfo中的TagName字段的值