sql 有关笛卡尔积的问题
发布网友
发布时间:2022-04-29 04:26
我来回答
共3个回答
热心网友
时间:2022-04-10 14:44
我测试建了几个表,你自己对照改成你得表名列名就行了
create table student
(
sid int identity primary key,
name nvarchar(50)
)
insert into student
select 'aaa' union
select 'bbb' union
select 'ccc'
go
create table F
(
fid int identity primary key,
fname nvarchar(50)
)
go
insert into F
select '数学' union
select '语文' union
select '英语'
go
create table Score
(
cid int identity primary key,
sid int,
fid int,
score int
)
go
insert into score
select 1,1,60 union
select 1,2,70 union
select 1,3,80 union
select 2,1,90
go
select * from student
select * from f
select * from score
go
select s.sid,f.fid,s.name,fname
from student s
cross join score c
cross join f
where
not exists
(
select cid from score where s.sid=score.sid and f.fid=score.fid
)
group by s.sid,s.name,fname,f.fid
order by sid
热心网友
时间:2022-04-10 16:02
那个表的字段可以判断逃避考试?成绩=0吗?
select T1.姓名,T2.科目
rom T1,T2,T3 where T1.学号=T3.学号 and T2.课程号=T3.课程号 and T3.成绩=0追问没有成绩,就是在表3 中没有记录
追答select T1.姓名,T2.科目
rom T1,T2 where not exists (select * from T3 where T1.学号=T3.学号 and T2.课程号=T3.课程号 )
热心网友
时间:2022-04-10 17:37
我有疑问:
没有考试的学生:全部课程都没考试,一部分课程没考试追问就是要把学生所缺的考试列出来,有可能是一部分没考,也可能全都没考,就是说他缺考几门,就列出来几门。。。
追答这个你看看:
select t1.学号,t2.课程号 from t1 cross join t2 where not exists (select 1 from t3 where t1.学号=t3.学号 and t2.课程号=t3.课程号)