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 查询尚未选课的所有学生的基本情况。。。...