创建测试表
-
CREATETABLE`areatest`(
-
`id`int(11)NOTNULLAUTO_INCREMENT,
-
`parent_id`int(11)NOTNULLDEFAULT'0'COMMENT'父ID',
-
`order_id`int(11)NOTNULLDEFAULT'0'COMMENT'排序ID',
-
`name`varchar(50)NOTNULLCOMMENT'名称',
-
PRIMARYKEY(`id`)
-
)ENGINE=MyISAMAUTO_INCREMENT=0DEFAULTCHARSET=utf8COMMENT='地区';
-
insertinto`areatest`values(1,0,1,'北京'),(2,0,3,'江西'),(3,0,2,'上海'),(4,2,1,'南昌'),(5,2,2,'九江'),(6,4,1,'永修'),(7,4,2,'星子'),(8,2,3,'赣州');
创建树形层次分析存储过程
-
DELIMITER$$
-
DROPPROCEDUREIFEXISTS`sp_areatest_child_nodes`$$
-
/*获取指定父ID树形层次数据放到child_nodes临时表*/
-
CREATEPROCEDURE`sp_areatest_child_nodes`(IN$parent_idINT/*父ID*/)
-
BEGIN
-
DECLARELEVELSMALLINTDEFAULT0;/*层次*/
-
DECLAREcouINTDEFAULT0;
-
DROPTABLEIFEXISTSchild_nodes_temp;/*单层次临时表*/
-
DROPTABLEIFEXISTSchild_nodes;/*层次临时表*/
-
CREATETEMPORARYTABLEchild_nodes_temp(`id`INT,`level`INT,`order_id`VARCHAR(1000))DEFAULTCHARSET=utf8;
-
CREATETEMPORARYTABLEchild_nodes(`id`INT,`level`INT,`order_id`VARCHAR(1000))DEFAULTCHARSET=utf8;
-
INSERTINTOchild_nodes_tempSELECT`id`,LEVEL,CAST(RIGHT(100+`order_id`,2)ASCHAR)FROM`areatest`WHERE`parent_id`=$parent_id;
-
SELECTROW_COUNT()INTOcou;
-
INSERTINTOchild_nodesSELECT*FROMchild_nodes_temp;
-
WHILEcou>0DO
-
SETLEVEL=LEVEL+1;
-
TRUNCATETABLEchild_nodes_temp;
-
INSERTINTOchild_nodes_tempSELECTa.`id`,LEVEL,CONCAT(b.order_id,CAST(RIGHT(100+a.`order_id`,2)ASCHAR))FROM`areatest`a,child_nodesbWHEREa.`parent_id`=b.`id`ANDb.`level`=LEVEL-1;
-
SELECTROW_COUNT()INTOcou;
-
INSERTINTOchild_nodesSELECT*FROMchild_nodes_temp;
-
ENDWHILE;
-
DROPTABLEchild_nodes_temp;
-
END$$
-
DELIMITER;
创建树形数据查询存储过程
-
DELIMITER$$
-
DROPPROCEDUREIFEXISTS`sp_areatest_tree`$$
-
/*获取指定父ID树形数据*/
-
CREATEPROCEDURE`sp_areatest_tree`(IN$parent_idINT/*父ID*/)
-
BEGIN
-
CALLsp_areatest_child_nodes($parent_id);
-
SELECTa.id,CASEb.parent_idWHEN0THENb.nameELSECONCAT(SPACE(a.level*2),'|-',b.name)ENDAS`name`
-
FROMchild_nodesaINNERJOIN`areatest`bONa.id=b.id
-
ORDERBYa.order_id;
-
DROPTABLEchild_nodes;
-
END$$
-
DELIMITER;
测试1
CALL sp_areatest_tree(0);
测试2
CALL sp_areatest_tree(2);
分享到:
相关推荐
以下是对SQL树形数据处理的一些关键知识点的详细说明: 1. **递归查询**: SQL中的递归查询是处理树形数据的核心方法。通过自连接,我们可以遍历层级关系。例如,使用`WITH RECURSIVE`语句(在PostgreSQL、MySQL ...
在Java开发中,构建用户界面时,树形菜单和树形表格是常见且重要的组件,它们可以帮助用户以层次结构的方式浏览和操作数据。本篇将详细介绍如何利用Ztree和treeTable来实现这样的功能。 Ztree是一款基于JavaScript...
在开发Java Web项目时,构建树形数据结构是常见的需求,尤其在展示多级分类、组织结构或地理位置等场景。本篇文章将详细讲解如何利用Java和MySQL递归地实现拼接树形JSON列表的方法。 首先,我们需要理解问题的整体...
这个项目提供了从数据库读取数据并用JSP展示的完整流程,对于学习者来说,可以通过阅读和分析这些文件来理解如何结合Java、JSP和MySQL构建动态的Web应用,特别是如何实现树形数据结构的展示。同时,也可以学习到如何...
为了正确渲染树形数据,必须指定 `row-key` 属性,这通常用于唯一标识每一行数据。在这个例子中,`row-key` 被设置为 `id`,这意味着每一行的ID将作为区分不同行的键。 为了指示哪些行具有子节点,可以使用 `...
在C# WinForm开发中,树形菜单(TreeView)是一种常用的数据展示控件,它可以将层级结构的数据以直观的方式呈现给用户。本知识点主要聚焦于如何将数据从数据库读取并绑定到TreeView控件上,实现数据的动态加载和显示...
5. **dTree插件**:dTree是一款基于JavaScript的可折叠树形菜单组件,用于在网页上显示层次结构的数据。在本项目中,前端可能利用dTree来展示从服务器获取的JSON数据,实现动态的、可交互的无限级联树视图。 6. **...
在IT领域,树形插件是一种常见的用户界面组件,它以树状结构展示数据,使得层级关系一目了然。ZTree是一款广泛使用的JavaScript插件,尤其适用于构建可交互的树形菜单或目录结构。本实例是关于如何利用ZTree与MySQL...
然而,对于旧版本的MySQL,存储过程仍然是获取树形结构的有效方法。 在提供的`mysql递归调用获取树节点(子树).doc`文档中,应该详细解释了这个过程,包括如何创建和执行存储过程,以及如何使用提供的测试数据。...
首先,我们需要一个用于存储树形数据的表。在这个例子中,表名为`treenodes`,包含三个字段:`id`(主键,整型,非空)、`nodename`(节点名称,可变长度字符串)和`pid`(父节点ID,整型)。表结构创建语句如下: ...
在树形控件的应用中,数据往往存储在数据库中,如MySQL、Oracle或SQL Server等。数据库脚本用于创建、修改或删除数据库表结构,以便存储和管理树形结构的数据。JDBC(Java Database Connectivity)是Java平台的标准...
4. **数据结构和算法**:理解如何将数据库中的数据结构映射到树形结构,以及如何有效地遍历和更新这个结构,需要用到数据结构(如链表、二叉树)和算法(如深度优先搜索、广度优先搜索)知识。 5. **异步编程**:...
在数据库管理中,树形...总的来说,尽管MySQL没有内置的递归查询功能,但通过自定义函数和适当的设计,仍然可以有效地处理树形结构数据的查询。理解这些技术可以帮助我们在MySQL环境中优雅地处理复杂的层次数据问题。
"jsp树形菜单"是一种常见的网页元素,用于展示层级关系的数据,如网站导航、文件目录或组织结构。本项目利用JavaServer Pages (JSP) 技术,结合MySQL数据库来创建一个可自定义的树形菜单,而且其代码设计灵活,可以...
这个“zTree树形菜单jquery.rar”压缩包提供了一个实际的示例,教你如何利用zTree与MySQL数据库相结合,实现动态生成树形菜单的功能。 首先,让我们深入理解zTree的核心功能。zTree是轻量级的,它可以轻松地集成到...
当用户在树形框中进行选择或操作时,我们还需要编写事件处理代码,响应用户的交互并更新数据库中的数据。 在"易语言树形框无限分类的文本管理"这个子文件中,很可能包含了实现这一功能的具体源码示例。通过阅读和...