| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1856 人关注过本帖
标题:请教EXISTS子查询原理
只看楼主 加入收藏
nic
Rank: 2
等 级:新手上路
威 望:4
帖 子:175
专家分:0
注 册:2005-11-1
收藏
 问题点数:0 回复次数:4 
请教EXISTS子查询原理

学生数据库:XSCJ
学生表:XS
课程表:KC
成绩表:CJ

select *
from xs
where not exists
(select *
from kc
where not exists
(select *
from cj
where 课程号=kc.课程号 and 学号=xs.学号
)
)

该语句是选择选修了所有课程表里(表KC)的课程的学生情况。
请教该语句的查询原理是什么?(该例引用教科书的示例)

搜索更多相关主题的帖子: EXISTS 原理 查询 
2005-11-30 12:13
卜酷塔
Rank: 7Rank: 7Rank: 7
来 自:魅力青岛
等 级:禁止访问
威 望:39
帖 子:2569
专家分:0
注 册:2004-6-12
收藏
得分:0 
你的意思是想知道数据集合的原理是吧!让我考虑一下,过会给你答案。

觉得为时已晚的时候,恰恰是最早的时候。

2005-11-30 14:02
nic
Rank: 2
等 级:新手上路
威 望:4
帖 子:175
专家分:0
注 册:2005-11-1
收藏
得分:0 

我看不懂这样的子查询,谁能告诉我?


2005-12-01 11:12
史前大暴龙
Rank: 1
等 级:新手上路
帖 子:375
专家分:0
注 册:2005-11-22
收藏
得分:0 
我看了一下,但是不知是不是对的,我是这样理解的,他的查找结果是输出所有既有课程和成绩的学生的资料,他是用了一个双重否定的查询方式,我觉得好像是很多余的,一个简单的问题让他复杂化了,他的程序等于是:
select *
from xs,cj,kc
where cj.课程号=kc.课程号 and cj.学号=xs.学号

要是有什么不对的地方请大侠们指出,我也是新手!!!

我不是最好,但我可以更好,大家一起加油了
2005-12-01 11:51
nic
Rank: 2
等 级:新手上路
威 望:4
帖 子:175
专家分:0
注 册:2005-11-1
收藏
得分:0 
回复:(史前大暴龙)我看了一下,但是不知是不是对的,...
以下是引用史前大暴龙在2005-12-1 11:51:00的发言:
我看了一下,但是不知是不是对的,我是这样理解的,他的查找结果是输出所有既有课程和成绩的学生的资料,他是用了一个双重否定的查询方式,我觉得好像是很多余的,一个简单的问题让他复杂化了,他的程序等于是:
select *
from xs,cj,kc
where cj.课程号=kc.课程号 and cj.学号=xs.学号

要是有什么不对的地方请大侠们指出,我也是新手!!!

你这样写是指所有有选修课程的学生情况,而不论是选修一门还是所有的课程。

而题目的意思是指选修了所有课程的学生情况,比如课程表里有10门课,选修了这10门课,在成绩表里都有这10门课的成绩。

我的写法是这样:
select 学号,姓名
from xs
where 学号 in
(select 学号
from cj
group by 学号
having count(*)=
(select count(*)
from kc

)

教科书上那样写我看不懂


2005-12-01 13:18
快速回复:请教EXISTS子查询原理
数据加载中...
 
   



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

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