如何利用Access建立多表链接合并数据查询

接下来我们就要幵始用Access数据库处理数据啦!我们再回顾一下上篇文章,什么是数据处理?数据处理主要包含哪些操作?


数据处理就是根据数据分析的目的,将采集到的数据,用适当的处理方法整理和加工,形成适合数据分析要求的样式,也就是一维表。它是数据分析前必不可少的阶段。数据处理包括数据合并、数据计算、数据分组、数据去重等操作。我们先来学习数据合并。数据合并包括横向合并与纵向合并。

横向合并

横向合并就是从多个表中,根据各表共有的关键字段,把各表所需的记录一一对应起来。这个功能也相当于Excel中的VLOOKUP精确匹配功能。例如刚才导入的“订购明细"表,它只记录了用户订购单的相应信息,但缺乏用户的相关背景信息,如果要统计不同性别的用户的产品购买偏好,就必须获得用户的性别信息。这时就需要将“订购明细"表与“用户明细”表根据关键字段n用户ID”进行关联匹配查询。

订购表和用户表关系图

订购表和用户表关系图

现在就看看在Access数据库中如何实现数据横向合并,接下来要先做什么呢?怎么做?主要有两种方式,一种是菜单操作法,另一种就是SQL查询法。我们先学习菜单操作法。

1.菜单操作法

首先,建立“订购明细"与‘‘用户明细”两表的数据库关系。

单击【数据库工具】选项卡,在【关系】组中单击【关系】按钮。

在弹出的【显示表】对话框中,同时选中“订购明细”与“用户明细”两表(可结合Shift键同时选中,也可结合Ctrl键依次选中),单击【添加】按钮,再单击【关闭】按钮,以关闭【显示表】对话框。

在【关系管理器】中,将“订购明细”表中的“用户ID”字段用鼠标拖到“用户明细”表中的‘‘用户ID”字段处,松开鼠标。

在弹出【编辑关系】对话框中,单击【联接类型】按钮,默认选择第一种关系【只包含两个表中联接字段相等的行】,单击【确定】按钮,返回【编辑关系】对话框。

显示表和关系管理器

显示表和关系管理器

编辑管理器和连接属性

编辑管理器和连接属性

这里需要注意:我们确定“订购明细"表中的‘‘用户ID"记录信息都在‘‘用户明细”表中,所以可以用第一种关系;反之,则需要选择第三种关系,以确保“订购明细”表信息的完整性。

单击【创建】按钮,返回【关系管理器】,可以看到,在【关系】窗口中两个表的“用户ID”字段之间出现了一条关系连接线。

两表关系连接

两表关系连接

单击【保存】按钮,并关闭【关系管理器】。

两张表的关系就建立好了。接下来就要执行查询步骤,从“订购明细”表中选取“产品”字段,从“用户明细”表中选取‘‘性别”字段,就能取出我们需要的不同用户性别与所购买产品一一对应的明细数据,以方便统计不同性别的用户的产品购买偏好。可利用Access数据库中‘‘简单查询”功能来实现,具体查询操作步骤如下。单击【创建】选项卡,在【查询】组中单击【查询向导】按钮。

在弹出的【新建查询】对话框中,默认选择【简单查询向导】,单击【确定】按钮。

在弹出的【简单查询向导】第一个对话框【表/查询】项中,选择“订购明细"表,并把“用户ID”、“产品”两个字段移至【选定字段】框中。

在【简单查询向导I第二个对话框【表/查询】项中,选择“用户明细"表,并把“性别”字段移至【选定字段】框中,单击【完成】按钮,在弹出的对话框中,单击【保存】按钮。

“订购明细”和“用户明细”两个表联合查询的结果。

如果用VLOOKUP匹配这么大量的数据,至少也要好几分钟,要是匹配的字段较多,速度还会更慢。没错,这就是数据库具备的Excel所不具备的优势。

在Access数据库左侧对象栏中可以发现比查询前新增了一个查询对象“订购明细查询”,这就是我们刚才新建的查询。只要双击它,Access数据库就会按指定的条件重新执行查询,如果数据量非常大,双击需谨慎!

另外还有一种菜单操作法,如果你对Access查询功能及原理比较熟悉,还可以用“查询设计"新建查询,相比“查询向导”会快捷一点,当然这要看个人习惯与偏好,仁者见仁,智者见智。后面我会通过其他例子介绍‘‘查询设计”功能的使用方法。

SQL查询法

之前提到Access数据库中进行查询处理可直接生成相应的SQL语句,不需要我们亲自编写SQL语句吗?Access数据库是怎么生成相应SQL语句的,在刚才的Access数据库查询结果窗口中,单击Access数据库窗口最右下方的SQL按钮。

Access数据库可直接生成相应的SQL语句,我说的没错吧?让我们一起来看看生成的SQL语句与刚才的查询操作是否能对应上。

SOL 语句的意思是:选择查询“订购明细’”表的“用户旧”、“产品”字段,以及相对应的“用户明细”表中的“性别”字段,从“用户明细”表内连接“订购明细”表选择,条件是“用户明细”表的‘,用户旧”字段与“订购明细”表的‘,用户ID”字段相等。

Access 数据库生成的 SQL 语句就是我们刚才联合查询的操作。只需单击【设计 】选项卡中 【 结果】组的【运行 】按钮。

Access 数据库就直接执行查询操作。那么,内连接是什么意思呢? 这需要先了解下数据库连接关系,主要包含内连接( INNER JOIN )、左连接( LEFT JOIN )、右连接( RIGHT JOIN )三种数据库关系,使用时请注意区分。

  • 内连接( INNER JOIN ) :选择两个表中关键字段相匹配的记录,对应图“联接属性”对话框中的第一个关系。
  • Access左连接( LEFT JOIN ) :选择第一个表中的所有记录以及第二个表中与关键字段相匹配的记录,对应“联接属性”对话框中的第二个关系。
  • 右连接( RIGHT JOIN ) :选择第二个表中的所有记录以及第一个表中与关键字段相匹配的记录,对应 “联接属性”对话框中的第三个关系。
三种数据库链接方法

三种数据库链接方法

这条 SOL 语句我们还可以进一步简化为:

SELEC 丁 B .用户旧, B .产品, A .性别
FROM 用户明细 ASA ,订购明细 ASB
WHERE A .用户旧= B .用户旧;

1.这条 SOL 语句的条件采用 WHERE 子句进行编写,相对内连接( INNER JolN )语法更容易理解。

WHERE 子句由一个运算符( WHERE )及后面的条件表达式( A .用户旧= B .用户! D )组成。
Access 数据库会选择出符合 WHERE 子句所列条件的记录,如果没有指定 WHERE 子句,查询会返回表中的所有行。

2.这条 SQL 语句对“用户明细”表和“订购明细”表的表名分别重新命名为 A 、 B ,用关键字 AS 来命名;在编写 SOL 语句时,关键字 AS 可省略,直接在原表名后加上别名,中间以空格分隔。

本文由 学习链 作者:学习链 发表,其版权均为 学习链 所有,文章内容系作者个人观点,不代表 学习链 对观点赞同或支持,未经许可,禁止转载,题图来自Unsplash,基于CC0协议。

抱歉,评论已关闭!