请教一个问题,望有经验的大哥能给点意见,先谢过了
有3张表 
 第一张UsrInfo      字段:UsrID(自动编号)   UsrName    
 第二张表UsrAccount   ID(自动编号)   UsrName   Usrstar 
 第三张表UsrStar      ID(自动编号)   UsrName   BookID   
 需求:   
 通过用户UsrID取得用户UsrName 
 然后通过UsrName   从第二张表和第三张表中取得用户的相关数据 
 将其数据显示出来   
 问题是再第二张和第三张表中,不是一定存在第一张表中UsrName的数据   
 我没有这方面的经验,是这样做的,但行不通   
 一、使用内联   inner   join查询,但在第二和第三张表中不是一定有符合第一张表中的UsrName的记录,所以查询出错   
 二、建立三个记录集对象RS1   Rs2   Rs3 
 其对应sql1   sql2   sql3 
 sql1= "select   *   from   UsrInfo   where   UsrID= "&UsrID   
 sql2= "select   *   from   UsrAccount   where   UsrName= "&Rs1( "UsrName ")   
 sql3= "select   *   from   UsrStar   where   UsrName= "&Rs1( "UsrName ")   
 那里出错了   
 有更好的思路吗? 
 谢谢各位大大了 
------解决方案--------------------1. "使用内联 inner join查询,但在第二和第三张表中不是一定有符合第一张表中的UsrName的记录 "   
 应该用[left|right|full] Outer join 方式;   
 2.建一个RS即可: 
 Select * From [UsrInfo] a Left outer join [UsrAccount] b on a.UsrName=b.UsrName Left outer join [UsrStar] c on a.UsrName=c.UsrName Where a.UsrID=1
------解决方案--------------------left join
------解决方案--------------------是的,left join 就是的。 
 第一张表是主表
------解决方案--------------------Select * From [UsrInfo] a Left join [UsrAccount] b on a.UsrName=b.UsrName Left join [UsrStar] c on a.UsrName=c.UsrName
------解决方案--------------------你的语句写错了   
 应该如下:   
 sql= "select DI.UserName,DI.LoginTimes,DI.TeacherID,DI.RealName,DI.gender,DI.mail,DI.QQ,DI.telphone,DI.mobile,DI.address3,DI.PostCode,DI.DOKLock,DI.Authentication,DI.UserGroup,DI.UserMoney,DI.UserExper,DI.LoginTime,DI.LastIP,DI.content from [DOKInfo] DI left join [Fund] FD on DI.UserName=FD.UserName left join [prestige] PE on DI.UserName=PE.UserName where DI.TeacherID= "&userid     
 多了一个DI.DOKLock   
 还有一点需要注意,如果你使用的是access数据库   
 还应该使用()给sql语句分段   
 access中的写法   
 sql= "select DI.UserName,DI.LoginTimes,DI.TeacherID,DI.RealName,DI.gender,DI.mail,DI.QQ,DI.telphone,DI.mobile,DI.address3,DI.PostCode,DI.DOKLock,DI.Authentication,DI.UserGroup,DI.UserMoney,DI.UserExper,DI.LoginTime,DI.LastIP,DI.content from (([DOKInfo] DI left outer join [Fund] FD on DI.UserName=FD.UserName) left outer join [prestige] Pse on DI.UserName=pse.UserName) where DI.TeacherID= "&userid   
------解决方案--------------------Select * From ([UsrInfo] a Left outer join [UsrAccount] b on a.UsrName=b.UsrName) Left outer join [UsrStar] c on a.UsrName=c.UsrName Where a.UsrID=1