(18)查询所有选课的学生的详细信息。
select distinct Students.Sno,Sname,Semail,Scredit,Ssex,Cname,Courses.Cno,Score
from Students,Courses,Reports
where Students.Sno=Reports.Sno and Reports.Score is not null
根据你的语句来看是没有问题的,但是图片看不到也不知道是什么问题
Cources表和Resports没有键连起来,成了笛卡尔积,我想你Resports表有5条不为score字段null的数据吧。
加一个 and Cources.Cno = Resports.Cno
如果Resports表没有Cno字段那完了啊
而且你的这个Reports表有问题啊,少一个Sno字段
还的加上Student.Sno = Resports.Sno
这样才是 某个学生某门课程的成绩
要看你的score是哪张表里的,你查了三张表,但是只给两张表建立了关系,因此有可能多余的数据是因为没有和另一张表建立联系导致的多表查询结果混乱。
我的观点同三楼一样,你用三张表做笛卡尔积,却只有两张表有联系,所以才导致出现那么多重复的数据,不知道你的表是怎样安排的,但你可能得加上一句课程表.课程名=(也含有课程名的表).课程名
Courses和Reports之间的关联没有
where Students.Sno=Reports.Sno
and Courses.Cno=Reports.Cno
查询的数据表没有做好关联。
你查了三张表,但是只给两张表建立了关系,因此有可能多余的数据是因为没有和另一张表建立联系导致的多表查询结果混乱。笛卡尔积
你查了三张表,但是只给两张表建立了关系,因此有可能多余的数据是因为没有和另一张表建立联系导致的多表查询结果混乱。
你得用一张表做主表,其他两张表做从表,然后分别跟主表的某个字段做1对1的关联,这样就能查出一条数据结果了