51Testing软件测试论坛

标题: oracle 有个SQL不会写,看题目。 [打印本页]

作者: liudinglong    时间: 2015-8-2 13:52
标题: oracle 有个SQL不会写,看题目。
问:查询和“s001”号的同学学习的课程完全相同的其他同学学号和姓名;

脚本如下:

create table student(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
ssex varchar2(5)
);
create table sc(
sno varchar2(10),
cno varchar2(10),
score number(4,2),
constraint pk_sc primary key (sno,cno)
);
insert into student values ('s001','张三',23,'男');
insert into student values ('s002','李四',23,'男');
insert into student values ('s003','吴鹏',25,'男');
insert into student values ('s004','琴沁',20,'女');
insert into student values ('s005','王丽',20,'女');
insert into student values ('s006','李波',21,'男');
insert into student values ('s007','刘玉',21,'男');
insert into student values ('s008','萧蓉',21,'女');
insert into student values ('s009','陈萧晓',23,'女');
insert into student values ('s010','陈美',22,'女');
commit;
insert into sc values ('s001','c001',78.9);
insert into sc values ('s002','c001',80.9);
insert into sc values ('s003','c001',81.9);
insert into sc values ('s004','c001',60.9);
insert into sc values ('s001','c002',82.9);
insert into sc values ('s002','c002',72.9);
insert into sc values ('s003','c002',81.9);
insert into sc values ('s001','c003','59');
commit;






求大神指点,如何写这个SQL,要求通用,如果有高级一点的写法也可以附上,谢谢。

作者: fangty    时间: 2015-8-3 10:07
select* from sc  where sno<>'s001'minus
(
select* from sc
minus
select * from sc where sno='s001'
)


作者: jingzizx    时间: 2015-8-3 13:30
Select sno,sname  from student where student.sno in
(Select distinct sno from sc where sc.cno in
(Select cno from sc where sno = ‘s001’))

作者: liudinglong    时间: 2015-8-5 00:35
fangty 发表于 2015-8-3 10:07
select* from sc  where sno's001'minus
(
select* from sc

看不懂,请解释一下每段的意思,逻辑。另外minus具体是怎么用法?
作者: zhoukouzhen    时间: 2015-8-6 09:57
题目中要求“完全相同”




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2