SQL习题请问“查询学生号‘20170501’的学生选修

2021-01-05 15:22:39 字数 4526 阅读 7643

1楼:匿名用户

select b.课程号,

b.课程名,

a.成绩

from 选课 a

inner join 课程 b

on a.课程号=b.课程号

inner join 学生 c

on b.学生号=c.学生号

and c.学生号='20110501’'

2楼:匿名用户

select c.姓名,a.课程号,b.

课程名,a.成绩 from 选课 a left join 课程 b on a.课程号=b.

课程号 left join 学生 c on a.学生号=c.学生号 where a.

学生号='20110501'

3楼:匿名用户

哪三张表。哪个表里有哪个字段?

sql查询全部学生都选修的课程的课程号和课程名问题

4楼:匿名用户

select

course.cid,

course.**ame

from

course join study on (course.cid = study.cid)

group by

course.cid,

course.**ame

having

count(study.sid) = (select count(sid) from student);

逻辑:bai

首先,简单的把 课程表du 与 选修表 关联

course join study on (course.cid = study.cid)

然后 ,按照 课程号和课zhi程名 分组dao

group by

course.cid,

course.**ame

最后,版 要求 选修的人数权 = 学生总数

having

count(study.sid) = (select count(sid) from student)

数据库中查询全部学生都选修了的课程号和课程名??、

5楼:

select 课程.课程号

,课程.课程名

from 课程 where 课程号 in(select distinct 课程号 from 选课group by 课程号

having count(*) =(select count(*) from 学生)

)根据人数判断 ,比较土,可以这样试试。

6楼:匿名用户

楼上回答的 很不错了 可以这样做的。

这个问题其实真的很简单的。。。

sql查询至少选了学生200215122选修的全部课程的学生号码 5

7楼:hx何旭

好像是把 as 省略了 本来是

select distinct sno

from sc as scx

8楼:匿名用户

别名,你还没学好数据库的基础。sno是学号,sc是学生成绩表。

sql语言:如何编:查询学生都选修了哪些课程,要求列出课程号。

9楼:

select 课程号 from c表,成绩表 where c表.课程号=成绩表.课程号

10楼:匿名用户

select distinct 课程号 from c表,成绩表 where c表.课程号=成绩表.课程号

用sql语句列出全部学员都选修的课程的课程名和课程号

11楼:匿名用户

我的思路是在sc中判断每门课被选修了多少次,如果被选修次数=学生人数 则认为被所有学生选修。总觉得这个思路不太好,可是又想不出更好的逻辑关系

select **ame,**o from cwhere **o in (

select **o from sc

group by sno

having count(sno) = (select count(1) from s))

12楼:匿名用户

以上两位都是有错误的地方,选课人数应该以sc表中出现的学号记录数目为基准,因为s表中存在没有选课的学生.所以,**应该是这样的:

select **ame 课程名,**o 课程号from c

where **o in (

select **o from sc

group by **o

having count(sno) =(select count(distinct sno) from sc))

13楼:仙情雨神恋云

前面的回答有一点错误应该是这样

select **ame,**o

from c

where **o in (

select **o from sc

group by **o

having count(sno) =(select count(*) from s))

sql查询选修了全部课程的学生姓名

14楼:狠有毅毅

第一问:两个not exists表示双重否定:没有一个选了课的学生没有选course表里的课程

select sname

from student

where not exists /*没有一个学生满足以下条件*/

(select * from course

where not exists /*什么条件呢?没有选过course表里的课*/

(select * from sc

where sno =student.sno /*这里两个=分别指对应的关系,表示选过课并且是course里and **o=course.**o) 的课,只不过用not exists否定掉了*/

第二问:其实和not in 是一个意思 exists只返回true 或false 这里not exists里的内容 其实就是指学生选过的课程,再用not exists否定了,就变成了没有选的

15楼:匿名用户

分析原因如下:

第一问:两个not exists表示双重否定:没有

一个选了课的学生没有选course表里的课程

select sname from student where not exists /*没有一个学生满足以下条件*/

(select * from course where not exists /*什么条件呢?没有选过course表里的课*/

(select * from sc where sno =student.sno /*这里两个=分别指对应的关系,表示选

过课并且是course里and **o=course.**o) 的课,只不过用not exists否定掉了*/

第二问:其实和not in 是一个意思 exists只返回true 或false 这里not exists里的内容 其实就 是指学生选过的课程,再用not exists否定了,就变成了没有选

16楼:匿名用户

exists 是类似于in 效率比in 好的多

not exists 类似于 not in 效率一样比not in 一样好的多

再来看这个sql语句,应该明白了吧

用sql语言查询:至少选修了0003号学生选修的全部课程的学生学号

17楼:张凯明

一楼的答案不敢苟同,本人理解如下:

select x.stuid from (select sum(case

when a.stuid<>t.stuid then 1 else 0 end) ds,

(select count(distinct kecheng) from table b where b.stuid='0003') zs,

t.stuid

from table t left join tabl a on t.kecheng=a.kecheng

where t.stuid='0003'

group by t.stuid) x where x.ds>=zs;

楼上的注意了,是至少选修了0003号学生的全部课程,即如果这个学生选了5门课,其它的学生必须也至少选了这5门课

18楼:匿名用户

select id from table 1 where kecheng in (select kecheng from table2 where stuid = '0003')

SQL查询没有选修1号课程的学生姓名

1楼 匿名用户 select sname from student where not exists select from sc where student sno sc sno and o 1 2楼 匿名用户 select 姓名 sname from student where not exis...

查询选修了3门以上课程的学生学号

1楼 匿名用户 其实是可以的,只是教科书的不完整而已 select sno from sc group by sno having count 3 表示对任意列的统计,然后如果填写特定列比如 count o 则不会计算该列含有null的记录 比如 o12 null count 的结果为3 count...

查询尚未选课的所有学生的基本情况SQL语句

1楼 匿名用户 你的数据表结构怎么样 估计是一个学生表 一个选课表 选课表有一个学生id作为外键 select from students where studentid not in select distinct studentid from course 查询尚未选课的所有学生的基本情况。。。...