龙源期刊网
Access
中不匹配项查询的三种方法
作者:马鹏卫
来源:《软件导刊》
2013
年第
01
期
摘要:查找两个表之间不匹配项数据是全国计算机等级考试二级
Access
上机考题中新增
加的考点,属于考试大纲之外,相对于其它查询试题来讲较难。通过对试题的分析,从三个角
度分别给出了解决方法。
关键词:等级考试;
Access
;匹配查询
中图分类号:
TP301
文献标识码:
A
文章编号:
16727800
(
2013
)
001002302
0
引言
最近几次全国计算机等级考试二级
Access
上机考题中频频出现了一类查询,题目要求从
两个表中找出不匹配项数据。比如
“samp2
数据库中有
tStud
和
tScore
两个表,创建一个查询,
查找没有任何选课的学生的
„
学号
‟
和
„
姓名
‟
两个字段信息
”
,好多考生反映此类题貌似简单,但
却无从下手。
1
题目分析
题目中给出了两个表:一个是表示学生基本信息的
tStud
表(包含学号、姓名、性别等字
段,学号是主关键字段);另一个是表示学生各门课成绩的
tScore
表(包含学号、课程号和成
绩
3
个字段,学号和课程号是组合关键字段)。
题目要求查找
“
没有任何选课的学生
”
,那么首要的问题就是如何判断学生是否选了课。
tScore
表中列出的是学号、课程号和成绩
3
个字段,并且每个字段值均非空,此表同时表明如
果哪个学生选了课,那么在表中就有他的学号、课程号和成绩的相应信息。然而
tStud
表中包
含的却是所有学生信息,因此,
“
没有任何选课的学生
”
的含义就是该学生在
tScore
表没有相应
的记录,也就是说
tStud
表中的学号在
tScore
表中没有出现过,转换为查询中的条件就是
tStud
表中的学号不在
tScore
表的列表当中。
2
解决办法
通过前面的分析,对于此问题有以下
3
种解决方法:
(
1
)子查询。首先根据题目要求在设计网格中添加
tStud
表中的
“
学号
”
和
“
姓名
”
两个字
段,由于
“
没有任何选课的学生
”
的含义是
tStud
表中的学号不在
tScore
表的列表当中,所以可
设置
“
学号
”
的条件是
“NotIn
(
SELECT
学号
FROMtScore
)
”
,如图
1
所示。