[quote="junjie314"] 有谁能不能说具体的实现!~~现在如果光排序的那没问题,但是各节点之间不是有顺序的吗??这个顺序是可以改的..现在主要问题是如果要改这个的话就比较麻烦了..比如有两个父节点顺序是23和38 现在把23这个改成39的话..那23下面的所有子节点都要修改..
这个好象比较麻烦,要么是我设计的问题???[/quote]
首先创建一个SQL函数:weightValue,如下
[code]CREATE FUNCTION weightValue(@idValue int) RETURNS bigint AS
BEGIN
DECLARE @return bigint
DECLARE @fatherID int
DECLARE @number int
DECLARE @menuPath VARCHAR(50)
DECLARE @treeLevel int
DECLARE @weightLevel bigint
SET @return = 0
SET @weightLevel = 1
SELECT @fatherID=fatherID,@menuPath=menuPath,@number=number FROM treeTable WHERE id=@idValue
SELECT @treeLevel=len(@menuPath)-len(replace(@menuPath,'/',''))
WHILE(@treeLevel<9) --此处9为目录层次数,经测试bigInt可以支持9级目录,再多目录层次就会出现益出
BEGIN
SET @weightLevel=@weightLevel*100
SET @treeLevel=@treeLevel+1
END
SET @return=@number*@weightLevel
IF(@fatherID = 1)
BEGIN
RETURN(@return)
END
RETURN ([dbo].weightValue(@fatherID)+@return)
END[/code]
然后一个简单的查询SQL即可,如下:
[code]SELECT id,fatherId,menuPath,number FROM treeTable ORDER BY [dbo].weightValue(id)[/code]
查询结果就是想要的排列顺序,结果如下,因为结果是实时查询,所以节点可以随时配置
[code]112 1 /112 23
114 112 /112/114 1
116 114 /112/114/116 8
115 114 /112/114/115 9
113 112 /112/113 2
107 1 /107 38
109 107 /107/109 1
111 109 /107/109/111 4
110 109 /107/109/110 5
108 107 /107/108 2[/code]
分享到:
相关推荐
接下来,使用递归CTE来查询树形结构。递归CTE的基本结构如下: ```sql WITH RecursiveCTE (ColumnList) AS ( -- 基础查询(非递归部分) SELECT ... FROM ... UNION ALL -- 递归部分 SELECT ... FROM ...
首先,我们需要设计一个合适的数据库表结构来存储树形菜单的数据。一种常用的方法是使用自引用关系,即创建一个表格,其中每个记录都可能作为其他记录的父节点。例如,我们可以创建一个名为`Menu`的表,包含以下字段...
在这个场景下,我们需要设计一个数据库表结构来表示树形菜单的层次关系。一般我们会使用自引用的方式,即一个表中的一条记录可以关联到同表中的其他记录,形成层级关系。 **无限级树形菜单的数据结构设计** - 创建...
### SQL模糊查询并按匹配度排序 在数据库查询操作中,模糊查询是非常常见的一种需求,尤其是在需要处理大量数据且查询条件不确定的情况下。本篇文章将基于提供的SQL查询语句,详细介绍如何进行SQL模糊查询以及如何...
排序是处理树形结构数据时的一个重要方面,尤其是在树形结构的显示上。文章讨论了在客户端或服务器端进行排序的不同方法,并强调服务器端排序的重要性。DAG(有向无环图)的拓扑排序是指孩子的排序值大于其父节点,...
首先,我们需要创建一个 ADO 连接对象,使用 Connection 对象的 Open 方法来连接数据库。然后,我们可以使用 Recordset 对象来执行 SQL 语句,获取查询结果。最后,我们可以使用关闭连接和释放资源。 字段查询 在 ...
在IT行业中,构建一个动态树形权限菜单是常见的需求,特别是在开发管理后台或者Web应用程序时。这个主题聚焦于使用Java后端与JavaScript前端,结合SqlServer2005数据库来实现这样的功能。以下将详细讲解这一技术栈中...
"notepad++sql格式化插件"是针对Notepad++设计的一个专用工具,用于帮助程序员更方便地管理和美化SQL查询语句。 该插件的主要功能是格式化SQL语句,这意味着它可以自动调整代码的缩进、换行和空格,使得代码更加...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威指南。T-SQL是微软数据库管理系统的核心,用于数据操作、定义、存储过程和触发器等任务。本书...
在Java编程中,连接SQL Server数据库并执行查询是常见的任务,尤其当涉及到大量数据时,分页显示就显得尤为重要。本篇文章将详细讲解如何使用Java连接SQL Server数据库,执行查询语句以及实现分页显示。 首先,我们...
在本主题中,我们将深入探讨"sql正宗模糊查询",特别是如何模仿百度搜索引擎的关键字密度排序查询,同时理解不一定要词组匹配的概念。这在大数据检索、搜索引擎优化(SEO)以及提供更精确的用户搜索结果时特别有用。...
主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...
jquery的一个插件zTree...此demo是用vs08+sql2005写的 可任意修改 像样更多的功能和外观 就去zTree官网下一个 我写的这个是动态的 就是说是连接数据库的 class表 必须的字段 ID 父ID 还有类别名称。 不懂的可以随时问我
在“在线SQL查询”这个场景中,ExtJS 被用来构建一个用户界面,允许用户在浏览器中直接执行SQL查询,这对于数据库管理或数据分析来说非常方便。 `Ext.ux.window.VisualSQLQueryBuilder` 是ExtJS的一个扩展组件,...
虽然在提供的查询中没有使用,但值得一提的是SQL Server支持窗口函数,如`RANK()`, `ROW_NUMBER()`和`LEAD()`,它们可以在每个分组内对行进行排序,并返回基于这些顺序的值。 8. **游标**: 在第五题中,游标...
首先,我们需要创建一个表来存储树形结构的数据。在这个示例中,我们创建了一个名为 `t_part` 的表,包含三个字段:`zjid`(自己的编号)、`sjid`(上级的编号)和 `zjmc`(自己名称)。 ```sql create table t_part...
在实现TreeGrid时,通常需要编写一个Struts2 Action来获取数据,该Action可能会调用Spring管理的Service层方法,由Service层进一步调用Hibernate的DAO层来查询数据库中的树形结构数据。 描述中提到的"树形展现数据...
SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库的标准语言,它的功能强大,涵盖数据查询、插入、更新、删除以及数据库结构的创建和修改等多个方面。本书的第三版对SQL进行了全面而精炼的...
SQL是你和数据库交换的关键。掌握这个对于使用数据库来说是非常重要的。掌握SQL,对于数据库管理员以及数据库工程师来说,它犹如古代剑客手中的剑,现在士兵手中的枪一样绝对是不可或缺的。 第一章 编写基本的SQL ...
学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL