`
qinysong
  • 浏览: 192600 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Re: 一个捆扰我好几天sql分组排(树形结构查询+排序)

SQL 
阅读更多

[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]

分享到:
评论

相关推荐

    sqlserver实现树形结构递归查询(无限极分类)的方法

    接下来,使用递归CTE来查询树形结构。递归CTE的基本结构如下: ```sql WITH RecursiveCTE (ColumnList) AS ( -- 基础查询(非递归部分) SELECT ... FROM ... UNION ALL -- 递归部分 SELECT ... FROM ...

    无限级树形菜单(Sql数据库)

    首先,我们需要设计一个合适的数据库表结构来存储树形菜单的数据。一种常用的方法是使用自引用关系,即创建一个表格,其中每个记录都可能作为其他记录的父节点。例如,我们可以创建一个名为`Menu`的表,包含以下字段...

    VS2005+sql server2000实现无限级树形菜单

    在这个场景下,我们需要设计一个数据库表结构来表示树形菜单的层次关系。一般我们会使用自引用的方式,即一个表中的一条记录可以关联到同表中的其他记录,形成层级关系。 **无限级树形菜单的数据结构设计** - 创建...

    sql模糊查询并按匹配度排序

    ### SQL模糊查询并按匹配度排序 在数据库查询操作中,模糊查询是非常常见的一种需求,尤其是在需要处理大量数据且查询条件不确定的情况下。本篇文章将基于提供的SQL查询语句,详细介绍如何进行SQL模糊查询以及如何...

    Microsoft SQL Server中T-SQL关于树(层次)结构的处理研究.pdf

    排序是处理树形结构数据时的一个重要方面,尤其是在树形结构的显示上。文章讨论了在客户端或服务器端进行排序的不同方法,并强调服务器端排序的重要性。DAG(有向无环图)的拓扑排序是指孩子的排序值大于其父节点,...

    Excel_VBA+ADO+SQL入门教程_-_汇总.pdf

    首先,我们需要创建一个 ADO 连接对象,使用 Connection 对象的 Open 方法来连接数据库。然后,我们可以使用 Recordset 对象来执行 SQL 语句,获取查询结果。最后,我们可以使用关闭连接和释放资源。 字段查询 在 ...

    Java动态树形权限菜单JavaScript+SqlServer2005

    在IT行业中,构建一个动态树形权限菜单是常见的需求,特别是在开发管理后台或者Web应用程序时。这个主题聚焦于使用Java后端与JavaScript前端,结合SqlServer2005数据库来实现这样的功能。以下将详细讲解这一技术栈中...

    notepad++sql格式化插件

    "notepad++sql格式化插件"是针对Notepad++设计的一个专用工具,用于帮助程序员更方便地管理和美化SQL查询语句。 该插件的主要功能是格式化SQL语句,这意味着它可以自动调整代码的缩进、换行和空格,使得代码更加...

    Microsoft SQL Server 2008技术内幕:T-SQL查询_源代码及附录A

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威指南。T-SQL是微软数据库管理系统的核心,用于数据操作、定义、存储过程和触发器等任务。本书...

    java 连接sqlserver数据库查询,并分页显示

    在Java编程中,连接SQL Server数据库并执行查询是常见的任务,尤其当涉及到大量数据时,分页显示就显得尤为重要。本篇文章将详细讲解如何使用Java连接SQL Server数据库,执行查询语句以及实现分页显示。 首先,我们...

    sql正宗模糊查询(仿百度)关键字密度排序查询,不一定要词组匹配

    在本主题中,我们将深入探讨"sql正宗模糊查询",特别是如何模仿百度搜索引擎的关键字密度排序查询,同时理解不一定要词组匹配的概念。这在大数据检索、搜索引擎优化(SEO)以及提供更精确的用户搜索结果时特别有用。...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    asp.net树形结构菜单demo/无限级分类/zTree

    jquery的一个插件zTree...此demo是用vs08+sql2005写的 可任意修改 像样更多的功能和外观 就去zTree官网下一个 我写的这个是动态的 就是说是连接数据库的 class表 必须的字段 ID 父ID 还有类别名称。 不懂的可以随时问我

    extjs 在线sql查询

    在“在线SQL查询”这个场景中,ExtJS 被用来构建一个用户界面,允许用户在浏览器中直接执行SQL查询,这对于数据库管理或数据分析来说非常方便。 `Ext.ux.window.VisualSQLQueryBuilder` 是ExtJS的一个扩展组件,...

    SQL Server精华查询语句

    虽然在提供的查询中没有使用,但值得一提的是SQL Server支持窗口函数,如`RANK()`, `ROW_NUMBER()`和`LEAD()`,它们可以在每个分组内对行进行排序,并返回基于这些顺序的值。 8. **游标**: 在第五题中,游标...

    SQL sever 中递归查找子节点和父节点

    首先,我们需要创建一个表来存储树形结构的数据。在这个示例中,我们创建了一个名为 `t_part` 的表,包含三个字段:`zjid`(自己的编号)、`sjid`(上级的编号)和 `zjmc`(自己名称)。 ```sql create table t_part...

    SSH+Easyui之TreeGrid树形展现数据

    在实现TreeGrid时,通常需要编写一个Struts2 Action来获取数据,该Action可能会调用Spring管理的Service层方法,由Service层进一步调用Hibernate的DAO层来查询数据库中的树形结构数据。 描述中提到的"树形展现数据...

    SQL Pocket Guide 3rd Edition

    SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库的标准语言,它的功能强大,涵盖数据查询、插入、更新、删除以及数据库结构的创建和修改等多个方面。本书的第三版对SQL进行了全面而精炼的...

    Oracle四大宝典之一:Oracle Sql基础 中文版

    SQL是你和数据库交换的关键。掌握这个对于使用数据库来说是非常重要的。掌握SQL,对于数据库管理员以及数据库工程师来说,它犹如古代剑客手中的剑,现在士兵手中的枪一样绝对是不可或缺的。 第一章 编写基本的SQL ...

    学生信息管理系统+VB+SQL

    学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL学生信息管理系统+VB+SQL

Global site tag (gtag.js) - Google Analytics