问个简单的逻辑问题哦

heli_1005 2013-07-29 11:33:09
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 没有用的
...全文
208 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
heli_1005 2013-07-29
  • 打赏
  • 举报
回复
引用 3 楼 stublue 的回复:
你是只取4条中的一条。还是想把4条做聚合呢
我不是取充值表里面的学生,是取学生表里面的学生。学生表里的学生是唯一的。 关联充值表是因为想从充值表里面得到学生所在学校。
Leon_He2014 2013-07-29
  • 打赏
  • 举报
回复
你是只取4条中的一条。还是想把4条做聚合呢
Tosp2012 2013-07-29
  • 打赏
  • 举报
回复
取D表中最新的充值记录
heli_1005 2013-07-29
  • 打赏
  • 举报
回复

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
heli_1005 2013-07-29
  • 打赏
  • 举报
回复
谢谢大家,我在连接的时候,去除重复充值表里面的学生就ok啦 left join (select distinct ff.UseStudentId,ff.DistributeClientId from Colago_TS_PrepaidCard ff ) c on a.Student_ID=c.UseStudentId
Tosp2012 2013-07-29
  • 打赏
  • 举报
回复
引用
我不是取充值表里面的学生,是取学生表里面的学生。学生表里的学生是唯一的。 关联充值表是因为想从充值表里面得到学生所在学校。
取充值表里每个学生的最新充值记录,这是唯一的。再与其他表关联既可以了。
Leon_He2014 2013-07-29
  • 打赏
  • 举报
回复
引用 4 楼 heli_1005 的回复:
[quote=引用 3 楼 stublue 的回复:] 你是只取4条中的一条。还是想把4条做聚合呢
我不是取充值表里面的学生,是取学生表里面的学生。学生表里的学生是唯一的。 关联充值表是因为想从充值表里面得到学生所在学校。[/quote] PrepaidCardNum 是表示学校的吗? 还是其他字段表示学校?

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧