请教一个多表查询的问题!!!
SQLSERVER的数据库 
 说明:一个签到系统,2张表1个为user表,另一个为sign表 
 user   (id,username,password,name,power) 
 sign   (id,   userid,signTime) 
 签一次到向sign表插入一条数据 
 我的问题: 
 我想查询   2007-07-02   到   2007-07-30   签到记录 
 条件是, 
 按每一天来分组显示,每一组把user表所有的用户和用户签到信息都列出来,显示这个用户的用户名和这一天的签到时间(有的用户可能有一天没签到   但也要显示出用户名username,只是不显示signtime的值)    
 -------------------------------------------- 
 得到的结果类似这样的 
 是不是要这样 
 user 
 1,a,password 
 2,b,password 
 3,c,password   
 sign 
 1,aid,2007-07-03 
 3,cid,2007-07-05   
 结果 
 2007-07-02,1,a,null 
 2007-07-02,2,b,null 
 2007-07-02,3,c,null   
 2007-07-03,1,a,2007-07-03 
 2007-07-03,2,b,null 
 2007-07-03,3,c,null   
 2007-07-04,1,a,null 
 ... 
 2007-07-05,1,a,null 
 2007-07-05,2,b,null 
 2007-07-05,3,c,2007-07-05   
 ---------------------------------------- 
 请大侠们指教!! 
------解决方案--------------------SELECT C.D, C.id, E.username, D.signTime 
 FROM 
 (SELECT * FROM 
 (SELECT DISTINCT CONVERT(CHAR(10), signTime, 111) AS D  FROM sign) A 
 CROSS JOIN (SELECT id FROM user) B) C 
 INNER JOIN user E ON C.id = E.id 
 LEFT OUTER JOIN( 
 SELECT U.id, U.username, S.signTime 
 FROM user U 
 LEFT JOIN sign S ON U.id = S.userid)D ON C.id = D.id AND C.D = CONVERT(CHAR(10), D.signTime, 111) 
 ORDER BY C.D, C.id
------解决方案--------------------呵呵,把原来的表的结构修改了?