admin 管理员组

文章数量: 1184232


2024年5月17日发(作者:ios 进程和线程的区别)

龙源期刊网

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所示。

龙源期刊网

该子查询对应的SQL语句是:

SELECTtStud.学号,tStud.姓名

FROMtStud

WHEREtStud.学号NotIn(SELECT学号FROMtScore)

的国产手机各品牌的机型,非常适合于中国低端手机用户,而且软件使用简单方便,适用

于一般的微型课程开发者。

表1几款开发工具之比较

12开发资源

通用性12使用方便

程度12是否需要

编程12是否

免费12是否支

持视频FlashLite12是12不方便12是12是12是LAM软件12是12方便12否12否12是

亘天炫彩12是12方便12否12是12否参考文献:

[1]杨长秀,白凤翔.基于手机彩信的微型课程资源设计初探[J].教育技术,2010(6).

[2]王珍珍,杨雪,傅健.基于FlashLite的移动学习资源开发研究[J].现代教育技术,2009

(4).

[3]董坤坤,戴心来,陈恳.基于LMA软件的移动学习资源设计[J].现代教育技术,2009

(6).

[4]陈向东.网络环境下的跨学科知识共享工具比较——信息行为的视角[J].图书情报工作,

2007(2).

[5]吴欣怡.基于LAM的实践英语移动学习资源的设计与开发[D].济南:山东大学,2011.

[6]杨文正,邹霞.移动学习资源开发的新型技术[J].现代教育技术,2007(11).

龙源期刊网

[7]丁雪全,甘霖,史如玉.用于学位论文格式转换工具比较[J].电脑知识与技术,2010

(3).(责任编辑:杜能钢)

图1子查询

(2)选择查询。首先,在查询设计视图中添加tStud表的学号和姓名字段、tScore表的学

号字段;其次,打开“视图”菜单的“联接属性”命令,在“联接属性”窗口中选择第二项“包括

„tStud‟中的所有记录和„tScore‟中联接字段相等的那些记录。”(图2)。它表示的含义是列出

tStud表所有的学生记录,其中包含了选课和没选课的学生,而题目只要求没有选课的学生,

所以查询设计视图中应在tScore表的条件行输入“IsNull”,以表示只显示没有选课的学生。然

后,为使tScore表的学号字段不在查询结果中重复显示,应将tScore表的学号字段设置为不显

示。

图2联接属性

该选择查询对应的SQL语句是:

SelecttStud.学号,tStud.姓名

FromtStudLeftJointScoreONtStud.学号=tScore.学号

WheretScore.学号IsNull

(3)查找不匹配项查询向导。既然“没有任何选课的学生”的含义就是学生在tScore表没

有相应的记录,也就表示tStud表中与tScore表不匹配的记录就是没有选课的学生,那么可以

利用“查找不匹配项查询向导”来简单地完成。

单击数据库窗口中的“新建”按钮,在弹出的“新建查询”对话框中选择“查找不匹配项查询

向导”。在“查找不匹配项查询向导”第一个对话框中双击“tStud表”;在第二个对话框中双击

“tScore表”;在第三个对话框中分别选择两表的“学号”字段,然后单击“”按钮,即两表匹配的

字段是“学号”;在第四个对话框选择查询结果所需的字段“学号”和“姓名”;在第五个对话框中

对查询重命名即可完成。

利用向导使查询变得更为简单,其结果在查询设计视图中与“选择查询”方法完全相同。

3触类旁通

查找不匹配项数据这类问题的题目一般会给出两个表:一个是所有学生或所有员工的基本

信息表;另一个是部分学生成绩表或部分员工工资表。然后要求查找这两个表中不匹配的信

息,就是找出一个表中有相关记录但另一个表中没有相关记录的信息。

龙源期刊网

通过做一道试题,考生应掌握查找不匹配项数据这一类题目的做法。

比如,查找有档案信息但无工资信息的职工,这里的“无工资信息”与前面题目的“没有任

何选课的学生”说法类似,所以做法也完全相同。

再比如,查找并显示所有学生的“姓名”、“课程号”和“成绩”3个字段内容,这里的“所有学

生”就是学生表中所有的记录,它不但包括选课的学生还包括没有选课的学生。因此,这道题

目的做法是:首先在查询设计视图当中添加两个表的相应字段,然后打开“视图”菜单的“联接

属性”命令,在“联接属性”窗口中选择第二项“包括„tStud‟中的所有记录和„tScore‟中联接字段相

等的那些记录”,即可完成,无需进行其它条件设置。

参考文献:

[1]捷成系统工程部.全国计算机等级考试练习系统软件[D].上海:华东理工大学,2010.

[2]陈莉莹,董文.Access中参数查询与查找不匹配项查询向导的应用[J].软件导刊,2007

(2).

(责任编辑:余晓)


本文标签: 查询 学生 查找 没有