| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 596 人关注过本帖
标题:谁帮忙解决一下!谢谢!
只看楼主 加入收藏
张汉卿
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2010-4-4
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:3 
谁帮忙解决一下!谢谢!
在学生信息表S中检索每一门课程成绩都大于等于80分的学生学号姓名性别
SELECT     SC.学号, S.姓名, S.性别
FROM         S INNER JOIN
                      SC ON S.学号 = SC.学号
WHERE     EXISTS
                          (SELECT     学号, 课程号, 成绩
                            FROM          SC AS SC_1
                            WHERE      成绩 >= 80 AND S.学号 =SC.学号)和 下面这个有什么不同啊,为什么检索出来的结果不一样啊,EXISTS    NOT EXISTS 是相反的意思  结果应该一样啊   
SELECT     SC.学号, S.姓名, S.性别
FROM         S INNER JOIN
                      SC ON S.学号 = SC.学号
WHERE  NOT EXISTS   
                          (SELECT     学号, 课程号, 成绩
                            FROM          SC AS SC_1
                            WHERE      成绩 < 80 AND  S.学号 = SC.学号)
搜索更多相关主题的帖子: 姓名 80分 课程 
2010-04-09 21:35
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:2 
其实逻辑问题:
第1个:查找存在成绩>=80学生的信息(只要有一门课成绩>=80就符合条件)
第2个:查找不存在成绩<80学生的信息(只要有一门课成绩<80就不符合条件,当然这个就是符合条件的查询)

★★★★★为人民服务★★★★★
2010-04-10 07:22
MIQIKing
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:36
专家分:106
注 册:2010-3-21
收藏
得分:3 
第一种
检索出来的是,只要有一科成绩在80分以上。
第二种
检索出来的是,只要有一科成绩在80分以下就不检索出来。
换种说法是:每科成绩都得在80分以上才能被检索出来。

举个例子
学号   课程号    分数
S1      C1        60
S1      C2        90
S2      C1        70
S2      C2        94
S3      C1        85
S3      C2        90
S4      C1        10
S4      C2        20

按照第一种因为S1的C2大于80符合条件;S2的C2也符合条件;S3的都符合;S4都不符合;查询结果应为S1,S2,S3所对应的学生信息;
按照第二种因为S1的C1小于80不符合条件;同理S2,S4也不符合;只有S3每科都大于80分;查询结果应为S3的学生信息;

用EXISTS查询时在接下来的()中用的SELECT 不用写那么多列的。因为EXISTS代表存在量词,子查询不返回任何实际数据的,只返回逻辑的真值TRUE或者假值FALSE。通常情况下吧,都用*。
2010-04-10 07:31
张汉卿
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2010-4-4
收藏
得分:0 
回复 3楼 MIQIKing
检索全部学生都选修的课程的课程号和课程名   (数据表C 是课程数据表   S  是 学生基本信息表  SC  是学生选课数据表)
SELECT 课程号,课程名  FROM  C
   WHERE  NOT  EXTSTS
           (SELECT * FROM S
           WHERE  NOT  EXTSTS
                (SELECT  *  FROM SC
                    WHERE SC.学号=S.学号  AND  SC.课程号=C.课程号))   
    我不明白这是一个什么样的逻辑 请你帮我解释一下。谢谢!
2010-04-10 10:05
快速回复:谁帮忙解决一下!谢谢!
数据加载中...
 
   



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

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