"列出选修了学生S1所选全部课程的学生学号"的SQL怎么写?

yanransoft 2004-04-04 10:01:36
SC表:
s# c# score
---- ---- -----------
s1 c3 80
s1 c8 145
s2 c3 100
s2 c6 90
s2 c8 95
s3 c4 90
s3 c8 100
s4 c1 80
s4 c4 90
s5 c1 90
s5 c9 90
s7 c8 90
...全文
336 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2004-04-04
  • 打赏
  • 举报
回复
:)
yanransoft 2004-04-04
  • 打赏
  • 举报
回复
结果应该只有s2和s1.

upto(阿球)的第一行加一个distince就对了!
「已注销」 2004-04-04
  • 打赏
  • 举报
回复
不知道这个对不对?

SELECT a.s#
FROM SC a
WHERE NOT EXISTS (
SELECT * FROM SC b
WHERE b.s#='s1' AND NOT EXISTS (
SELECT *
FROM SC C
WHERE C.s#=a.s# AND c.c#=b.c# )
}
yanransoft 2004-04-04
  • 打赏
  • 举报
回复
结果应该只有s2.
「已注销」 2004-04-04
  • 打赏
  • 举报
回复
上面是错误的,等等...
liuhaixue 2004-04-04
  • 打赏
  • 举报
回复

SELECT DISTINCT s#
FROM sc
WHERE (c# IN
(SELECT c#
FROM sc
WHERE (s# = 's1')))
swdinoho 2004-04-04
  • 打赏
  • 举报
回复
select [distinct} s#
from SC
where C# in
( select C# from SC where S#='s1' )
「已注销」 2004-04-04
  • 打赏
  • 举报
回复
SELECT DISTINCT a.s# FROM SC a
WHERE a.c# IN (
SELECT b.c# FROM SC b
WHERE b.s# = 's1'
}
yanransoft 2004-04-04
  • 打赏
  • 举报
回复
如果s1选修了c1,c2,c3课程,
列出所有也选修了c1,c2,c3课程的所有学生(包括s1)。
strawren 2004-04-04
  • 打赏
  • 举报
回复
楼主,偶不是很明白你在说什么呢。
是不是要这个呀
select * from SC where s#='S1'
数据库原理实验指导书 实验名称:试验一:SQL语言嵌套查询和数据更新操作 所属课程:数据库原理 实验类型:设计型实验 实验类别:基础□ 专业基础√ 专业□ 实验学时:4学时 一、实验目的 1.熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式; 2.加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算); 3.熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用; 4.加深理解表的定义对数据更新的作用 二、预习与参考 1.熟悉SQL SERVER 工作环境; 2.连接到学生-课程数据库 3.复习对表中数据查询的SQL语言命令; 4.复习对表中数据的插入、修改和删除的SQL语言命令。 三、实验要求(设计要求) 针对教材例子,通过SQL SERVER企业管理器和查询分析器两种模式,熟悉数据嵌套查询、更新操作。 四、实验方法及步骤 1.在表S、C、SC上进行简单查询; 2.在表S、C、SC上进行连接查询; 3.在表S、C、SC上进行嵌套查询; 4.使用聚合函数的查询; 5.对数据的分组查询; 6.对数据的排序查询。 7. 将数据插入当前数据库的表S、C、SC中; A:用SQL命令形式 B:用SQL SERVER提供的企业管理器以交互方式进行 8.将以上插入的数据分别以.SQL文件和.txt文件的形式保存在磁盘上; 9.修改表S、C、SC中的数据;   A:用SQL命令形式 B:用SQL SERVER提供的企业管理器以交互方式进行 10.删除表S、C、SC中的数据。 A:用SQL命令形式 B:用SQL SERVER提供的企业管理器以交互方式进行 五、实验内容 在表S,C,SC上完成以下操作: 1. 查询学生的基本信息; 2. 查询“CS”系学生的基本信息; 3. 查询“CS”系学生年龄不在19到21之间的学生学号、姓名; 4. 找出最大年龄; 5. 找出“CS”系年龄最大的学生,显示其学号、姓名; 6. 找出各系年龄最大的学生,显示其学号、姓名; 7. 统计“CS”系学生的人数; 8. 统计各系学生的人数,结果按升序排列; 9. 按系统计各系学生的平均年龄,结果按降序排列; 10. 查询每门课程课程名; 11. 查询无先修课的课程课程名和学时数; 12. 统计无先修课的课程的学时总数; 13. 统计每位学生选修课程的门数、学分及其平均成绩; 14. 统计选修每门课程学生人数及各门课程的平均成绩; 15. 找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列; 16. 查询选修了“1”或“2”号课程学生学号和姓名; 17. 查询选修了“1”和“2”号课程学生学号和姓名; 18. 查询选修课程名为“数据库系统”且成绩在60分以下的学生学号、姓名和成绩; 19. 查询每位学生选修课程学生信息(显示:学号,姓名,课程号,课程名,成绩); 20. 查询没有选修课程学生的基本信息; 21. 查询选修了3门以上课程学生学号; 22. 查询选修课程成绩至少有一门在80分以上的学生学号; 23. 查询选修课程成绩均在80分以上的学生学号; 24. 查询选修课程平均成绩在80分以上的学生学号; 25. 选做:针对SPJ数据库中的四个表S,P,J,SPJ,完成教材P74-75--习题5中的查询及教材P127--习题5中的查询。 26. 将数据分别插入表S、C、SC; 27. 将表S、C、SC中的数据分别以.SQL文件和.txt文件的形式保存在磁盘上。 28. 在表S、C、SC上练习数据的插入、修改、删除操作。(比较在表上定义/未定义主码(Primary Key)或外码(Foreign Key)时的情况) 29. 将表S、C、SC中的数据全部删除,再利用磁盘上备份的数据来恢复数据。 30. 如果要在表SC中插入某个学生的选课信息(如:学号为“200215121”,课程号为“c123”,成绩待定),应如何进行? 31. 求各系学生的平均成绩,并把结果存入数据库; 32. 将“CS”系全体学生的成绩置零; 33. 删除“CS”系全体学生的选课记录; 34. 删除学号为“S1”的相关信息; 35. 将学号为“S1”的学生学号修改为“S001”; 36. 把平均成绩大于80分的男同学的学号和平均成绩存入另一个表S——GRADE(SNO,AVG——GRADE); 37. 把选修课程名为“数据结构”的学生的成绩提高10%; 38. 把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生的成绩提高5%; 39. 把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生成绩删除掉; 40. 选做:将数据插入SPJ数据库中的四个表S,P,J,SPJ中,并以.SQL文件和.txt文件的形式保存在磁盘

111,116

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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