问个SQL的问题,帮帮忙?

[复制链接]
查看11 | 回复6 | 2007-9-26 18:42:10 | 显示全部楼层 |阅读模式
小弟在看SQL题目的时候遇到了个问题.
题目是要求检索选修了所有课程的学生姓名
学生选修课程的关系中有三个表 STUDENT (SNO .SNAME),COURSE(CNO .CNAME)和选课表S-C(SNO CNO GRADE):
SELECT STUDENT.SNAMEFROM STUDENT WHERE NOT EXISTS
(SELECT* FROM COURSE WHERE NO EXISTS
(SELECT* FROM S-C WHERE STUDENT.SNO=S-C.SNO ANDCOURSE.CNO=S- C.CNO))
上面的三个SELECT中,第二应该是在COURSE表里选所有的属性吧 ,就是(CNO .CNAME),可是SNAME表中的属(SNO .SNAME)和COURSE没有可联系(相同)的属性,那第一个SELECT后面的EXISTS用在SNAME表和COURSE间,是怎么起作用的啊?
小弟初学,问的东西蠢,大虾不要笑话俺
:fd:


回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
EXISTS是指,是否有数据存在,与字段没有关系。
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
呵呵,对啊,我以前习惯了IN这种的查询,对于EXISTS的查询具体是怎么执行的不是很懂,比如这个题目里,第三个SELECT肯定是要返回结果的,那么第二个SELECT和第一个查询完的结果具体是什么属性项了或者说是满足什么条件的元组(呵呵,我搞不清楚,就随便乱说了),恼烦大虾指点。。。。。
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
NOT EXIT clause 中的SELECT X, 这里的X没有意义
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
exists select 1都可以。
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
最初由 llm06 发布
[B]exists select 1都可以。 [/B]

有点不明白,还是


回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
最初由 roughrock 发布
[B]NOT EXIT clause 中的SELECT X, 这里的X没有意义 [/B]

没有意义?那SELECT应该从那个地方选取了?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行