| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 601 人关注过本帖
标题:问一个数据库语言问题,具体原因是我理解不了!
只看楼主 加入收藏
seki1018
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-5-7
收藏
 问题点数:0 回复次数:4 
问一个数据库语言问题,具体原因是我理解不了!
查询这样的学生,,没有一门课程是他不选修的
SQL语句为
select Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM Course
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno-Student.Sno
AND Con=Course.Cno));
Course是课程表 里面有Cno 课程号Cname课程名 Cpno先行课 等
SC里面有Sno学号 Cno课程号 Grade成绩
student里面有Sno Sname Ssex Sage Sdept.....
我知道查询没有一门课程是他不选修的要用双重否定
但是为什么是这样Student -Course-SC这3个里面呢?
搜索更多相关主题的帖子: 数据库 语言 
2007-10-31 13:51
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 

不知说啥.


我的msn: myfend@
2007-10-31 13:53
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
但是为什么是这样Student -Course-SC这3个里面呢?
---------------------
什么意思?

飘过~~
2007-10-31 13:55
徐强
Rank: 2
等 级:新手上路
威 望:3
帖 子:72
专家分:0
注 册:2007-3-30
收藏
得分:0 

很复杂的一个问题,理解的不透彻,
把我的想法给你参考一下,希望有所帮助
--相当于一个嵌套循环
/*
执行查询就相当于游标检索,第一个记录-->第二个记录
for(int i=0;i<s.count;i++)
{
i已经是固定值了,那么最后一个查询就把范围缩小到i为这个固定值的时候了
中间单个的not exists就没必要用循环分析了(最后一个查询的结果表示学生编号为
i的人选择的所有的课程,not exists很明显结果是查询当前没有被i选择的课程,
如果有返回值说明这个人有没选择的科目(记录下他的i值),没有返回值表示他选择了全部,
根据返回的i的集合(i的集合表示没有选择全部科目的学生标号);查询学生中编号不在
(没有选择全部科目的学生编号集合))
--中间的循环没必要分析
for(int j=0;j<c.count;j++)
{

}
}

*/

2007-10-31 17:27
徐强
Rank: 2
等 级:新手上路
威 望:3
帖 子:72
专家分:0
注 册:2007-3-30
收藏
得分:0 
select sname from student where not exists
(select * from course where not exists
(select * from (select * from sc where sno= student.sno) as a where a.cno=course.cno ))
不知道这样写你会不会好理解些
2007-10-31 17:36
快速回复:问一个数据库语言问题,具体原因是我理解不了!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011632 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved