多维数据库查询方法及装置的制造方法

文档序号:9787448阅读:762来源:国知局
多维数据库查询方法及装置的制造方法
【技术领域】
[0001 ]本发明涉及数据库技术领域,尤其涉及一种多维数据库查询方法及装置。
【背景技术】
[0002] 随着计算机技术的发展所带来的对数据持久化的需求,数据库技术的应用越来越 广泛。常见的数据库操作中,数据库操作人员需要编写SQL(Structured Query Language, 结构化查询语言)语句来对数据库中的数据项进行增删改查的操作。
[0003] 然而,现有的数据库查询操作中,通常有多维查询数据库的需求,即存在多组需要 进行查询的查询条件,返回每组查询条件对应的查询结果的并集,每组查询条件中在相应 数据表的部分字段下的关键字可能相同。传统技术中,在处理多维查询数据库的需求时,通 常需要用户为每一组查询条件编写一条子SQL语句,然后通过"或(0R)"操作拼接各个子SQL 语句,得到每组SQL语句的查询结果的并集。这就使得在多维查询的维度较广时,一次多维 查询任务对应的SQL语句将变得非常的长,造成了维护的不便。

【发明内容】

[0004] 基于此,为解决上述提到的传统技术中的多维查询数据库时编写的SQL语句过长 而造成的可维护性不足的技术问题,特提出了一种多维数据库查询方法。
[0005] -种多维数据库查询方法,包括:
[0006] 接收输入的多维查询参数,所述多维查询参数包含至少一个关键字集合,所述关 键字集合中的关键字各自对应一个预设的数据表字段;
[0007] 生成树对象,遍历所述关键字集合,根据预设的字段顺序将所述遍历到的关键字 集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中, 所述路径上的树节点与所述关键字集合中的关键字按照所述字段顺序一一对应;
[0008] 将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并,所述 合并得到的树节点中包含被合并的树节点中的关键字构成的关键字组;
[0009] 遍历所述合并后的树对象中每个根节点到叶节点的路径,获取遍历到的路径上的 树节点中的关键字组,根据in操作符生成遍历到的路径对应的查询条件式,通过or操作符 连接所有路径对应的查询条件式生成SQL语句。
[0010] 在其中一个实施例中,所述根据预设的字段顺序将所述遍历到的关键字集合中的 关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中的步骤还包 括:
[0011] 按照预设的字段顺序遍历数据表字段,在所述遍历到的关键字集合中查找与所述 遍历到的数据表字段对应的关键字,根据查找到的关键字以及查找顺序生成由所述树对象 的根节点到叶节点的路径。
[0012] 在其中一个实施例中,所述将所述树对象中递归包含有相同子节点的且对应同一 父节点的树节点合并的步骤还包括:
[0013] 由所述树对象的叶节点向根节点进行遍历,逐层将对应的子节点包含相同关键字 组的且对应同一父节点的树节点合并。
[0014] 在其中一个实施例中,所述通过or操作符连接所有路径对应的查询条件式生成 SQL语句的步骤还包括:
[0015]接收输入或预设的分组数据表字段,使用Group By语句将所述分组数据表字段添 加到所述生成的SQL语句中。
[0016] 在其中一个实施例中,所述接收输入的多维查询参数的步骤之后还包括:
[0017] 获取所述多维查询参数中的关键字对应的数据表字段的枚举类型,将所述多维查 询参数中的关键字转换成与该关键字对应的数据表字段的枚举类型的关键字。
[0018] 为解决上述提到的传统技术中的多维查询数据库时编写的SQL语句过长而造成的 可维护性不足的技术问题,特提出了一种多维数据库查询装置。
[0019] 一种多维数据库查询装置,包括:
[0020] 参数接收模块,用于接收输入的多维查询参数,所述多维查询参数包含至少一个 关键字集合,所述关键字集合中的关键字各自对应一个预设的数据表字段;
[0021 ]查询树生成模块,用于生成树对象,遍历所述关键字集合,根据预设的字段顺序将 所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添 加到所述树对象中,所述路径上的树节点与所述关键字集合中的关键字按照所述字段顺序 --对应;
[0022] 查询树合并模块,用于将所述树对象中递归包含有相同子节点的且对应同一父节 点的树节点合并,所述合并得到的树节点中包含被合并的树节点中的关键字构成的关键字 组;
[0023] 语句生成模块,用于遍历所述合并后的树对象中每个根节点到叶节点的路径,获 取遍历到的路径上的树节点中的关键字组,根据in操作符生成遍历到的路径对应的查询条 件式,通过or操作符连接所有路径对应的查询条件式生成SQL语句。
[0024] 在其中一个实施例中,所述查询树生成模块还用于按照预设的字段顺序遍历数据 表字段,在所述遍历到的关键字集合中查找与所述遍历到的数据表字段对应的关键字,根 据查找到的关键字以及查找顺序生成由所述树对象的根节点到叶节点的路径。
[0025] 在其中一个实施例中,所述查询树合并模块还用于由所述树对象的叶节点向根节 点进行遍历,逐层将对应的子节点包含相同关键字组的且对应同一父节点的树节点合并。
[0026] 在其中一个实施例中,所述语句生成模块还用于接收输入或预设的分组数据表字 段,使用Group By语句将所述分组数据表字段添加到所述生成的SQL语句中。
[0027] 在其中一个实施例中,所述参数接收模块还用于获取所述多维查询参数中的关键 字对应的数据表字段的枚举类型,将所述多维查询参数中的关键字转换成与该关键字对应 的数据表字段的枚举类型的关键字。
[0028] 实施本发明实施例,将具有如下有益效果:
[0029] 采用了上述多维数据库查询方法及装置之后,对于输入的多维查询参数,先生成 树对象,树对象中包含了与多维查询参数中的每组关键字集合对应的由根节点到叶节点的 多条路径,然后对树对象进行合并,将该多条路径合并为较少的合并关键字为关键字组的 路径,然后根据该路径利用SQL语言中的IN操作符生成SQL语句,其中包含的由OR操作符连 接的查询条件的个数则精简到了树对象进行合并后包含的路径的数量,而传统技术中生成 的SQL语句中包含的由OR操作符连接的查询条件的个数为树对象合并前包含的路径的数 量,因此,和传统技术相比,本发明生成的SQL语句的长度得到了精简,从而降低了维护难 度,也提高了执行效率。
【附图说明】
[0030] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0031] 其中:
[0032] 图1为一个实施例中一种多维数据库查询方法的流程图;
[0033] 图2为一个实施例中生成完整树对象的逻辑示意图;
[0034] 图3为一个实施例中合成树对象的树节点的过程示意图;
[0035] 图4为一个实施例中合成树对象的树节点的过程示意图;
[0036] 图5为一个实施例中合成后的树对象的树节点的逻辑示意图;
[0037] 图6为另一个实施例中生成完整树对象的逻辑示意图;
[0038] 图7为另一个实施例中合成树对象的树节点的过程示意图;
[0039] 图8为另一个实施例中合成后的树对象的树节点的逻辑示意图;
[0040] 图9为一个实施例中一种多维数据库查询装置的结构示意图;
[0041] 图10为一个实施例中运行前述结构化查询语句的版本控制方法的计算机设备的 结构示意图。
【具体实施方式】
[0042] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0043] 如前所述,传统技术中的多维数据库查询中,输入的查询参数可如表1所示,表1展 示了一个应用场景中多维数据查询中输入的查询参数构成的查询参数矩阵。
[0
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1