`
beliveAda
  • 浏览: 112591 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

db2树形结构sql问题(转)

阅读更多
今天在论坛中看到一个很有意思的题目,拿来分享一下:
创建table的语句:
CREATE TABLE TEST_TREE (

"ID" BIGINT NOT NULL ,

"FARTHERID" BIGINT NOT NULL ,

"NAME" VARCHAR(50) NOT NULL ) 
插入数据的语句:
insert into TEST_TREE values(1001,0,'中国'),(100101,1001,'山东'),(100102,1001,'河北'),(100103,1001,' 湖北'),(10010101,100101,'济南'),(10010102,100101,'青岛'),(10010201,100102,'石家庄 '),(10010202,100102,'杨柳青'),(10010301,100103,'武汉'),(10010103,100103,'荆州')

要求sql生成的数据结构为:
中国 山东 济南
中国 山东 青岛
中国 河北 石家庄
中国 河北 杨柳青
中国 湖北 武汉
中国 湖北 荆州

该如何解决呢?
解决的办法是使用了个临时表,用递归的方式生成。语句如下:
select * from temp.TEST_TREE;

with t ( id,name,seq)
as (
select id,name,0 from temp.TEST_TREE
where fartherid=0
union all
select a.id,b.name||' '||a.name,seq +1 from temp.TEST_TREE a,t b
where a.fartherid=b.id
)
select name  from t where seq=2;
答案显示正确。

递归的过程通过如下的语句可以看出来:

with t ( id,name,seq)
as (
select id,name,0 from temp.TEST_TREE
where fartherid=0
union all
select a.id,b.name||' '||a.name,seq +1 from temp.TEST_TREE a,t b
where a.fartherid=b.id
)

select name as name0,0  from t where seq=0
union all
select name as name1 ,1  from t where seq=1
union all
select name as name2,2  from t where seq=2


结果中显示为:
'中国' 0
'中国 河北' 1
'中国 山东' 1
'中国  湖北' 1
'中国 河北 石家庄 ' 2
'中国 河北 杨柳青' 2
'中国 山东 济南' 2
'中国 山东 青岛' 2
'中国  湖北 武汉' 2
'中国  湖北 荆州' 2
分享到:
评论

相关推荐

    MS SQL Server树形结构表遍历的循环算法.pdf

    但是,MS SQL Server在当时尚未内置递归查询功能,这意味着在MS SQL Server上实现树形结构表的遍历查询需要采取其他方法。 文章中提出了在MS SQL Server上实现树遍历查询的循环算法。这一算法的提出基于对树遍历...

    sql树形数据处理示例(Jet wang 最新整理)

    在SQL数据库中,树形数据结构是一种常见的非关系型数据模型,它用于表示层次关系或具有父子关系的数据。本示例由Jet Wang最新整理,旨在帮助我们理解和掌握如何在SQL中处理这种类型的数据。以下是对SQL树形数据处理...

    在db2和oracle中的对树的递归查询语句

    在数据库管理领域,DB2和Oracle都是广泛应用的关系型数据库系统,它们都支持对树形结构数据的处理。本文将深入探讨这两个数据库系统中如何使用递归查询语句来操作树形结构。 首先,让我们理解什么是树形结构。在...

    db2 数据库连接客户端

    3. **结果查看**:查看SQL查询的结果,可以以表格、树形或文本格式显示,还可以导出为CSV、Excel或其他格式。 4. **对象浏览**:浏览数据库中的表、视图、存储过程和其他对象,允许你查看其定义和元数据。 5. **数据...

    db2迁移到mysql.docx

    在DB2中,树形结构的查询可能使用特定的函数或存储过程。在MySQL中,可以通过递归查询或者使用自定义函数来实现类似的功能。 ##### 5.1. 根据传入ID查询所有父节点的ID ```sql SELECT * FROM treenodes WHERE FIND_...

    SqlDbx unicode版

    5. **数据库对象浏览**:允许用户以树形结构查看数据库中的表、视图、存储过程等对象,便于理解和管理数据库架构。 6. **数据导入与导出**:支持从不同格式(如CSV、Excel)导入数据到数据库,以及将数据导出到文件...

    SqlDbx 连接数据库最简单的工具

    - **对象浏览**:允许用户以树形结构查看数据库中的表、视图、存储过程等对象,便于理解和管理数据库结构。 - **数据编辑与操作**:提供数据编辑器,支持添加、修改和删除记录,同时支持数据导入导出功能。 - **...

    SQLDBX professional

    它可以以表格、树形或图表形式展示数据库中的数据,便于用户查看和理解。同时,用户可以直接在工具中对数据进行增删改查操作,甚至可以执行批处理命令,极大地提升了数据库管理的便利性。 对于数据库开发,SQLDBX ...

    C++连接SQL数据库

    - **层次型数据库**将数据组织成一棵树形结构,其中每一个节点都有一个父节点(除了根节点外),这种模型在处理特定类型的数据关系时非常有效。 - **网络型数据库**与层次型类似,但允许一个节点有多个父节点,能够...

    SQL最佳实践

    通过定义父节点和子节点之间的关系,可以轻松地构建出树形结构的数据。 - **Oracle用法**:使用`CONNECT BY PRIOR`子句来指定层次关系。 - **CONNECT_BY在DB2、SQL Server中的实现**:虽然不同数据库系统的实现方式...

    SQLExplorer_for_eclipse

    同时,它还支持查询结果的可视化展示,可以将查询结果以表格、树形或文本形式显示,方便用户查看和分析。 此外,SQLExplorer还包括了数据库对象的管理功能,如表、视图、索引、存储过程等,用户可以直接在插件中...

    squirrel sql client

    4. **数据库对象浏览**:用户可以通过树形结构直观地浏览数据库中的表、视图、索引、存储过程等对象,方便进行管理和操作。 5. **连接配置**:支持多种数据库驱动,用户可以根据需要配置JDBC连接参数,轻松连接到...

    历年名企招聘SQL数据库笔试题精编(珍藏版).doc

    22. **对层次数据库的描述**:在层次数据库中,数据结构以树形结构呈现,每个记录都有一个父记录和零个或多个子记录。 以上就是从给定的SQL数据库笔试题中提炼出的关键知识点,涵盖了数据库设计、操作、并发控制、...

    DBA最有用的数据库系统原理知识 Oracle MySql DB2

    1. **层次模型**:这种模型将数据组织成树形结构,每个记录只能有一个父记录。 2. **网状模型**:在此模型中,每个记录可以有多个父记录,形成了一个网状结构。 3. **关系模型**:这是目前应用最为广泛的模型,它将...

    SQL了解第一章

    - **层次模型**: 数据结构为树形结构,每个节点只有一个父节点。 - **关系模型**: 最常用的数据模型,数据以二维表格的形式存储,易于理解和查询。 **5. 主流数据库简介** - **SQL Server**: 微软公司的产品,...

    Sql和jdbc教程(私塾在线)视频配套学习资料

    - **处理树形结构**:利用自连接或者递归查询等方式处理数据库中的树形结构数据。 #### 三、JDBC技术 ##### 1. JDBC简介 - **定义**:JDBC(Java Database Connectivity,Java数据库连接)是一种用于执行SQL语句的...

    xquery参考手册.pdf

    - **XQuery**:适用于XML数据,其数据模型是树形结构,更灵活地表示嵌套的数据结构。 #### 2. 查询语法的不同 - **SQL**:使用固定的列名和表名来引用数据。 - **XQuery**:通过路径表达式来定位和检索XML数据中的...

    《数据库sql server》ppt 贾祥素

    - **层次模型**:采用树形结构表示数据间的联系,适用于表达一对多的关系。 - **网状模型**:使用网状结构表示数据间的联系,可以表达多对多的关系,但结构较为复杂。 - **关系模型**:目前最常用的数据模型,使用二...

    DBVisualizer9.07.rar

    2. **数据浏览**:工具提供了一种直观的方式以表格、图表或树形结构来查看数据库中的数据,使数据浏览和理解变得更加简单。 3. **SQL开发**:DBVisualizer提供了代码自动完成、语法高亮、错误检查等特性,极大地...

Global site tag (gtag.js) - Google Analytics