热情软件屋

 

如何查找两个表中的特定日期的所有用户的信息


编号:QA001320
建立日期: 1999年7月11日 最后修改日期:2002年3月25日
所属类别:

Jenny:
    sql->oracle 7.*
    server端:win nt4.0
    有两个表T1,T2;T1是用户代码信息表(假如说用户数是10个,代码如‘10’,‘11’等,以后还可以增加),T2是这些用户每天的信息表,T2表里的用户信息不一定每天都有记录。有时是全空,有时是只有其中几个人的记录。此两个表是根据用户代码来进行连接的。
    问题是:
    要想查找特定日期的所有用户的信息,如果没有记录就显示《用户名:空》。我用的是T1表循环,然后根据T1里的用户代码,SELECT T2的相应信息。这样做,随着T2表记录的增多,速度慢。有没有更好的方法提高速度,比如说只访问T2表,对用户代码做一些技巧?谢谢专家们!!!

回答:

    对于这种问题,一般不使用两个表单独查询,可以对多个表同时进行查询,如 T1和T2的用户代码都是 ID, T2 中的日期为 Date,则查询代码如下:
    Select * from T1,T2
     where T1.ID = T2.ID
     and T2.date=某日期 ;
    此外,如果查询的量很大,还可以以ID为关联建立T1和T2的视图,具体格式因数据库的不同而有所不同,大致如下:(视图名为T1_T2)
    create View T1_T2 from T1,T2
     where T1.ID=T2.ID
    ( may be some error,
     to see the document of Oracle )
    另外,还可使用 Power Builder 用图形的方式建立视图.
    (it is a easy way to control database)
    对视图的查询同查询单表一样。
    select * from T1_T2
     where T1_t2.Date = 某日期 ;
    
    可可的意见:
    如T1和T2的用户代码都是ID, T2中的日期为Date,则查询代码如下:
    Select T1.ID,T2.* from T1,T2
     where T1.ID = T2.ID
     and T2.date=某日期group by all T1.ID
    
    停云问: 若“where t2.date=某日期”中的某日期为变量,则查不出来,是何因?如
    "selece * from aa where aa.date1="&date2
    答:应该这样:
    s= "selece * from aa where aa.date1=#" & format(日期变量,"yyyy-mm-dd") & "#"。
    你可以看看在执行上面这条语句和执行
    s = "selece * from aa where aa.date1="&date2
    这条语句之后s变量的值有什么不同,相信就能体会原因。
    
    相关问题:
    QA003800 "用VB+ADO查询日期条件则无法返回正常结果"

此问题由莫名回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio