NC5自定义查询用户手册new 联系客服

发布时间 : 星期三 文章NC5自定义查询用户手册new更新完毕开始阅读

第17章

在数据库应用系统中,数据查询始终是应用的基础和核心。数据利用和挖掘的常用方式就是从数据库中获取用户所需的业务数据,按照用户预定义的格式,通常以业务报表的形式提供给用户进行浏览、分析、统计、打印及转换,还可作进一步的处理。由于查询需求的多样性,不可能穷举所有的用户查询,当然也不能要求普通用户去直接拼写SQL语句,因此需要提供一个工具让用户可以自己进行查询的设计和定制。

17.6查询引擎

查询引擎是面向高级实施人员和专业开发人员的查询建模工具,可以全面支持复杂查询的设计和个性化的报表展现。查询引擎由两个功能点组成:查询引擎管理和查询引擎权限控制。

17.6.0 查询引擎基本概念及案例 17.6.0.1 基本概念

数据表、临时表、报表:

数据表是数据库里物理存在的表;

报表是符合用户要求的一个界面展现,它通常是一个二维的数据表格; 有时我们仅仅通过数据表无法直接查出报表要求的数据结果,这时可能需要通过数据表查询建立一些具有过渡性质的中间表,然后再通过这些中间表查出最终结果,这种起到过渡作用的表称为临时表。

数据字典:

数据字典提供数据库对象的逻辑属性,有助于提高查询定义的直观性和易用性。

内连接与外连接:

这是多表查询中的不同连接方式,其中外连接主要包括左连接(left out join)和右连接(right out join)两种。

左连接取出左侧关系中所有与右侧关系的任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,再把产生的元组加到内连接的结果上。右连接与左连接完全对称,“表A左连接表B”与“表B右连接表A”的效果是一样的。

以下述的表A和表B为例,它们以字段K作为键值进行不同连接后会得到不同结果集。 K V1 K V2 01 10 01 100 02 20 03 300 05 500 03 30 表A 表B

内连接(select A.K, A.V1, B.K, B.V2 from A inner join B on A.K=B.K)的结果是: A.K A.V1 B.K B.V2 01 10 01 100 03 30 03 300

左连接(select A.K, A.V1, B.V2 from A left join B on A.K=B.K)的结果是:

A.K A.V1 B.K B.V2 01 10 01 100 02 20 03 30 03 300 右连接(select A.K, A.V1, B.V2 from A right join B on A.K=B.K)的结果是:

A.K A.V1 B.K B.V2 01 10 01 100 03 30 03 300 05 500

普通查询(简单查询)与复合查询:

复合查询和普通查询的关系如图所示。两者的查询结果都可以看成是临时表,其差别在于:普通查询是基于数据表定义查询,复合查询是基于已经定义好的查询来定义查询。

参数定义:

通常用于查询定义中SQL向导设计工具中的where条件表达式中,存在字符型和数值型(浏览时可直接录入)、字符枚举和数值枚举型参数(浏览时可下拉框录入),参照型参数(浏览时可参照录入)等

穿透:

当明细表与汇总表一起出现时,某种内在联系可从汇总数据联查明细数据,称穿透或钻取

分级汇总:

按分级列(具有一定级次的编码规则),对汇总列(数值型)进行各级汇总,并在各级末尾添加分级汇总列。

交叉:

按一定交叉规则进行旋转交叉或投影交叉 1)旋转交叉:行列不固定

存在一定交叉规则(指定交叉行、交叉列、交叉值字段)之后,报表全动态地实现数据交叉。常用多层列表头辅助体现交叉的维度,且交叉规则能够在运行态重新设定。

适用于无法预先确定交叉后列结构的报表;

2)投影类交叉:行列固定;每行、每列均对应一个筛选条件,而单元格第i行第j列的内容根据SQL语句“select 统计函数(字段) from 表 where (行条件i) and (列条件j)”查出,且是个唯一的值 交叉砝码:

交叉设置界面中的交叉砝码的作用是,描述交叉值字段对应的列出现在交叉列展开后的哪个层次上。

退化:

在投影交叉查询中的筛选条件中设置为退化的项;用于在运行态(浏览态)进行再次投影交叉时,其结果集中需显示的备用行或备用列。在第一次投影交叉查询结果中,退化项则既不出现在行头上,也不出现在列头上。 行间占比:

行间占比:指先按分组排序列进行分组排序,然后计算单元格与其所在分组小计值的比,或者为单元格与其所在列总合计值的比 列间占比:

列间占比:指比例=本列数值/多列总和 合并查询:

报表部分区域由查询结果填充、部分区域由手工填入,此类报表可通过“合并查询”模式完成。

17.6.0.2典型报表案例:

报表是由数据和格式组成的整体。

报表中的取数规则离不开SELECT查询语句

查询模型中的核心功能“SQL向导设计”实际是SELECT查询语句的可视化工具。 如汇总表中的SELECT查询语句:

SELECT 年度,公司编码,公司名称,科目,sum(借方发生额),sum(贷方发生额) FROM 凭证表

INNER JOIN 凭证分录表 ON凭证表. 凭证主键=凭证分录表. 凭证主键 INNER JOIN 公司目录表 ON凭证表. 公司编码=凭证分录表. 公司主键 INNER JOIN 科目表 ON凭证分录表. 科目主键=科目表. 科目主键 WHERE 公司=corp

GROUPBY年度,公司编码,公司名称,科目 ORDERBY 年度,公司编码,公司名称 ASC

以下“SQL向导设计”工具(如下图)中: “连接表”页签对应FROM…..部分

“连接条件”页签对应INNER JOIN …….ON部分 “连接字段” 页签对应SELECT……部分 “筛选条件”页签对应WHERE……部分 “排序字段” 页签对应ORDERBY……

系统自动对不含聚合函数的字段作GROUPBY处理。

(一)汇总表:

年度 公司编码 公司名称 科目 借方发生额 100 200 700 贷方发生额 100 200 700 2001 01 A 1001 2001 01 A 2001 2002 02 B 1002 2002 02 B 2002 2003 03 C 1003 2003 03 C 2003

用sql语言表示:

SELECT 年度,公司编码,公司名称,科目,sum(借方发生额),sum(贷方发生额) FROM 凭证表,凭证分录表,公司目录表,科目表 INNER IN…..ON……

GROUPBY年度,公司编码,公司名称,科目 ORDERBY 年度,公司编码,公司名称

(可通过“SQL向导设计”功能完成。)

(二)明细表:

年度 2001 2001 公司编码 公司名称 凭证号 01 01 A A 1 1 制单日期 科目 2001/9/1 2001/9/1 1001 2001 借方发生额 100 贷方发生额 100