易截截图软件、单文件、免安装、纯绿色、仅160KB

一个SQL无限级树型存储过程实现树型结构数据排序

我们在平常的系统开发中常常会遇到像无限级分类这样的树型结构数据,现提供一个可用的数据库存储过程,可以完成树型结构数据的排序。
环境:windows7+Sql Server 2008
说明:下面代码已经转换成Sql server2000的脚本,处理效果如下,看sortname字段结果,代码经过测试。
创建树型表
CREATE TABLE [dbo].[categories](
[category_id] [int] IDENTITY(1,1) NOT NULL,
[parent_id] [int] NULL,
[category_name] [varchar](500) NULL,
CONSTRAINT [PK_categories] PRIMARY KEY CLUSTERED
(
[category_id] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
插入测试数据
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (1, 0, CONVERT(TEXT, N'A'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (2, 0, CONVERT(TEXT, N'B'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (3, 1, CONVERT(TEXT, N'AA'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (4, 3, CONVERT(TEXT, N'AAA'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (5, 2, CONVERT(TEXT, N'BB'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (6, 1, CONVERT(TEXT, N'AA2'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (7, 1, CONVERT(TEXT, N'AA3'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (8, 3, CONVERT(TEXT, N'AAA2'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (9, 4, CONVERT(TEXT, N'AAA3'))
INSERT [dbo].[categories] ([category_id], [parent_id], [category_name]) VALUES (10, 2, CONVERT(TEXT, N'BB2'))
创建存储过程,表中的level为级别深度,通过生成的临时表与分类表关联显示结果。
CREATE PROCEDURE [dbo].[Get_TreeData]
AS
BEGIN
--创建临时表
create table #tmp_table (id int,[level] int)

declare @LevelValue int
set @LevelValue=0
insert #tmp_table select 0,@LevelValue
--将数据写入到临时表
while @@rowcount>0
begin
set @LevelValue=@LevelValue+1


相关文档:

sql嵌套查询

select * from sq_donglong.achi_news where ID in (select ID from (select top 6 ID from sq_donglong.achi_news where SortID=82)a union all select ID from (select top 6 ID from sq_donglong.achi_news where SortID=84)b)
......

SQL分组排序

今天遇到个有意思的问题,是一个分组排序的问题,不过要求分组和分组间也要排序,如果这个组内有一条数据是最近更新的,那么这整个组都应该排在前面。
下面以Oracle的HR示例Schema中的employees表为例:
语句按部门分组,分组之间的排序是这样的:如果整个分组中有一个员工的hire_date是最新的,那么这个分组就应该排在其 ......

SQL语句复制表的方法


SQL语句复制表的方法
(2009-08-29 13:41:54)
标签:
sql
分类:计算机知识
如果目的表已经存在:
insert into DATAHR.DBO.GBITEM
select * from DEMO.DBO.GBITEM
如果目的表不存在:
select * into DATAHR.DBO.GBITEM
from DEMO.DBO.GBITEM
跨库导入
select * into [zk_news].[dbo].[News1] from [zk_media].[ ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号