求个简单的sql语句,谢谢!

lanyanse0504 2011-06-22 09:43:03
如下表:课程表course,学生成绩表sc,求全部学生都选修的课程的课程名
create table course
(
c# int, //课程号
t# int, //课程名
cname varchar(50)
)
create table sc
(
s# int, //学生号
c# int, //课程号
score int //分数
)
//测试数据
insert into course values(1,1,'语文')
insert into course values(2,1,'数学')
insert into course values(3,2,'英语')

insert into sc values(1,1,50)
insert into sc values(1,2,60)
insert into sc values(1,3,70)
insert into sc values(2,1,80)
insert into sc values(2,3,90)
insert into sc values(2,2,90)

insert into sc values(3,2,50)

则上面全部学生都选修的课程为课程2,数学
...全文
104 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liang145 2011-06-23
  • 打赏
  • 举报
回复

create table course
(
c# int, --课程号
t# int, --课程名
cname varchar(50)
)
create table sc
(
s# int, --学生号
c# int, --课程号
score int --分数
)
--测试数据
insert into course values(1,1,'语文')
insert into course values(2,1,'数学')
insert into course values(3,2,'英语')

insert into sc values(1,1,50)
insert into sc values(1,2,60)
insert into sc values(1,3,70)
insert into sc values(2,1,80)
insert into sc values(2,3,90)
insert into sc values(2,2,90)
insert into sc values(3,2,50)

select c.c#, c.cname from course as c join sc on sc.c#=c.c# group by c.c#, c.cname
having count(1)=(select count(distinct s#) from sc)

c# cname
----------- --------------------------------------------------
2 数学

(1 row(s) affected)
ddjm123456 2011-06-22
  • 打赏
  • 举报
回复
很好的例子~~~~

wxl3wei 2011-06-22
  • 打赏
  • 举报
回复
偶再发个方法,拓展一下思路
select * from course
where c# in
(
select c# from
(
select COUNT(s#) cnt,c# from sc
group by c#
) a
where cnt=(SELECT COUNT(DISTINCT s#) FROM sc)
)

超凡 2011-06-22
  • 打赏
  • 举报
回复


select a.s#,a.score,b.cname from sc as a inner join course as b on a.c#=b.c# where a.c# =2

zs621 2011-06-22
  • 打赏
  • 举报
回复

SELECT * FROM course C
WHERE (SELECT COUNT(0) FROM sc WHERE c#=C.c#)=(SELECT COUNT(DISTINCT s#) FROM sc)


很多方法的

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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