||
在论坛之前的发帖中,已就联合查询定义、基本概念以及如何利用查询设计器进行联合查询设计,做过详细介绍。在此不再重复,本文着重就联合查询的实际运用,结合实例分步进行解析,让大家对于联合查询本身,及联合查询的实际运用,有一个初步直观而感性认识。
联合查询在数据库中运用是较广泛的,较为典型有:物品管理类、财务管理类等。
就拿物品管理来说,假设进、销、存是分表进行设计的,数据分别存放在各独立基表中,当我们要获得物品的分类明细账数据时,就必须通过联合查询将进、销、存三个基表的数据组合成为一个查询。
根据本人在实际的运用中的经验总结归纳,我将联合查询大致分为三大类:兼容并收类、无中生有类、移花接木类。
一、联合查询之兼容并收
这是联合查询最为常见,也最基本的类型。这类联合查询是将一个以上表或查询结果,进行重组而获得新查询结果。
要求用于构建联合查询的表或查询必须符合字段数必须相同,字段类型必须相容的两个基本条件和要求。
在罗斯文数据库实例中:“各城市的客户和供应商”查询,就是这类查询典型实例(见下图)
罗斯文数据库中联合查询实例 |
该实例的创建过程,大家可参看上文《查询设计器设计联合查询》,本文不做讲解。
二、联合查询之无中生有
这是联合查询又一种类型,是联合查询进阶的必经阶段。这类联合查询是将单笔或N笔自定义数据与表或查询组合而构成的查询。直白的说,就是将自定义数据与现成的表或查询数据组合而构成查询。
案例:如通过联合查询为组合框数据源,添加一笔自定义“全部”作为默认第一笔数据,用于查询时返回所有数据。(见下图)通过联合查询方式实现目的,要比我们在数据表中插入一笔“全部”数据要安全的多,因为这不会影响到原数据的完整性。
自定义数据 |
实例操作步骤:
1、通过查询设计器获得资产编号数据查询,实例名(组合框数据源一)
按图添加各字段,输入相应表达式
2 |
设计器中添加 [ 个股比值及净份纪录表 ] |
1 |
说 明: 1、 个股名称字段表达式的意思是:如名称为空时,用字符串 NULL 表示,不为空则显示个股名称; 2、 这里用了两个 [相关资产编号] 字段,第一字段对应组合框绑定数据,第二字段是组合框显示数据。 |
打开查询属性窗口,唯一值属性选择:是
3 |
4 |
将查询命名保存,本实例命名为:“组合框数据一” |
2、通过查询设计器自定义数据查询,实例名(组合框数据源二)
按图添加各字段自定义值
2 |
说 明: 1、 虽为定义数据,但还是必需在查询设计器中添加 [个股比值及净份纪录表] ,否则进行联合查询设计时报错; 2、 第一个字段中的 * 星号是组合框绑定字段,用于查询全部信息时指定值,这也是为什么前一个查询需要两个资产编号字段的原因 |
3 |
将查询命名保存,本实例命名为:“组合框数据二” |
3、通过查询SQL设计器将前面两个查询组合成联合查询,实例名(组合框数据结果)
1 |
设计器中通过 UNION 将前面两个查询联合起来 |
说 明: 1、 关键联接符 UNION 不能加 ALL ,否则自定义数据会出重复值; 2、 联合查询命名存盘后,可以直接成为组合框数据源。组合框具体设置参看实例。 |
三、联合查询之移花接木:
这是联合查询中相对复杂的类型。这类联合查询是前两类联合查询方式的综合类型,并在此基础上重新演生而构成全新的查询结果。大家可以实践摸索。
案例:该实例数据中,某个交易日中,认购与认沽数据成对,但有时认沽没有数据,使认购与认沽数据没有两两相对,不便于对照。为此我们通过巧接的方式补齐认沽数据,数据值为 “0” 。
巧接并补齐的数据 |
实例操作步骤:
1、按图先建立个第一个联合查询数据源:实例名(分组查询一)
按图添加各字段
2 |
设计器中添加 [ 个股比值及净份纪录表 ] |
1 |
2、按图先建立个第二个联合查询数据源:实例名(分组查询二)
按图添加各字段,及表达式
2 |
设计器中添加 [ 个股比值及净份纪录表 ] |
1 |
说 明: 1、 [ 表达式1:0 ] 为自定义补齐值,没加“”,表示非字符串值,以便下一步重组时计算; 2、 认购认沽字段为筛选字段,不显示在查询中,因此将钩选去掉; 3、 认购认沽字段之所以用“认购”为查询条件,因为认购数据中资产编号较完整,也为过滤去除“认沽”数据,避免资产编号数据重复。 |
3、按图将前第二个查询组合构成联合查询:实例名(分组查询三)
1 |
在SQL设计器中通过 UNION 将前面两个查询组合起来
查看联合查询结果,发现有些资编号,如:资产编号为1就出现两笔认沽数据,这是因为有的资产编号之前有数据存在,加上我们自定义的数据,因此出现认沽数据重复的情况出象。(见下图)
4、按图整理联合查询结果,实例名(分组查询结果)
2 |
设计器中添加 [ 分组查询三 ] |
1 |
按图添加各字段,及表达式,分组计算,并按交易日排序
查询结果命名保存,本实例命名为:“分组查询结果”
3 |
以上是本人在ACCESS使用中,对联合查询的一点点经验的总结归纳,写本文的目的,一是为便于自己总结提高,二是与初学者共同分享。由于本人认知有限且笔拙,不免有错漏这处,希望各位高人斧正。
|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )
GMT+8, 2024-11-25 06:59 , Processed in 0.049863 second(s), 17 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.