select * from  course A  inner join classReg B  on a.classid=B.classid 
inner join student c on c.sid=b.sid 
inner join prepaid d on d.usid=c.sid这里A课程表,b学生注册表,c学生表,d学生充值记录表。
当c里的一个学生充值多次,有多条充值记录。也就是c里一条记录,d里4条记录时,上面的查询会有4条。可是我只想有一条,怎么改呢  改成left join 没有用的

解决方案 »

  1.   


    select distinct(c.UseStudentId), b.Class_ID,dd.Class_Time_Begin,c.UseStudentId,c.PrepaidCardNum from tbl_Class_Profile b 
    inner join  tbl_Class_Profile_Detail dd on b.Class_ID=dd.Class_ID
    inner join tbl_class_reg a on b.Class_ID=a.Class_ID 
    inner join Colago_TS_Student e on e.StudentID=a.Student_ID
    inner join tbl_Course_Profile f on f.Course_Code=dd.Course_Code
    inner join  Colago_TS_PrepaidCard c on a.Student_ID=c.UseStudentId
    where  CONVERT(varchar(100),  dd.Class_Time_Begin, 23) =  '2013-07-23' 
    Colago_TS_PrepaidCard  这个就是充值记录的表,Colago_TS_Student 这个是学生表Colago_TS_Student 
      

  2.   

    我不是取充值表里面的学生,是取学生表里面的学生。学生表里的学生是唯一的。 关联充值表是因为想从充值表里面得到学生所在学校。PrepaidCardNum 是表示学校的吗?
    还是其他字段表示学校?
      

  3.   

    谢谢大家,我在连接的时候,去除重复充值表里面的学生就ok啦 
    left join (select  distinct ff.UseStudentId,ff.DistributeClientId from Colago_TS_PrepaidCard ff )  c on a.Student_ID=c.UseStudentId