如何查找两个表中的特定日期的所有用户的信息
编号: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查询日期条件则无法返回正常结果"
此问题由莫名回答。
| |
|
|
| |
|
|