登录名:  密码:  验证码: 2619
设为首页 收藏本站 联系站长
2009年1月10日
农历戊子年(鼠)
腊月十五
 首页 | 最新上传 | 新闻 | 购物商场 | 招聘求职 | HTML学习 | java学习 | IT新闻 | 黑客技术 | 域名和空间 | 流量统计 | 故事小说
 GIF动画制作 | 图片素材 | 源码下载 | 书籍下载 | 视频资料 | ASP | 数据库 | PHP | 基本电脑知识 | 迅雷资源 | 兼职 | 组网工程
 英语学习 | FLASH专区 | ASP.NET | VB | 综合资源网 | 驱动下载 | 游戏下载 | 网站模板网页美工 | 韩文学习 | 论坛
 特别推荐:产品报价  漂亮网站网址  图片素材
  我要查找:  
欢迎您来这里。每天学一点,每天进步一点!
Google
 当前位置:首页 >> ASP  >> ASP
整理一个asp多级树型分类问题的解决方法
来源:  发表日期:2008年4月5日 作者: 

 编辑:admin 级别: 司令 浏览次数:595
】    

这样的设计只要维护好每一个字段都为查询显示提高了效率!

请看下面的维护程序:

 

alter  procedure  AppSP_AddNew 
@ID  integer 
,@Title  varchar(8000)  =null 
,@Content  varchar(8000)=null 
as 
--declare  @id  int 
--set  @id=0 
if  @ID=0 
     begin 
           insert  into  Tree  (ParentID,OrderID,Indent,Title,Content) 
                               values  (0,0,0,@Title,@Content) 
           --把帖子顶到上面: 
           update  Tree 
                 set  RootID  =  ID 
                         ,MaxId  =  (select  max(id)  from  Tree) 
             where  RootID  is  null 
     end 
else 
     begin 
           --调整同一个"根帖"中,帖子的内部顺序: 
           update  Tree 
                 set  OrderID  =  OrderID  +  1 
             where  RootID  =  (select  rootid   
                                                 from  tree   
                                               where  ID  =  @id) 
                         and  OrderID  >  (select  OrderID 
                                                           from  Tree 
                                                         where  ID  =  @id 
                                                     )   
           --插入回复的帖子,同时维护  RootID,ParentID,OrderID,Indent,remark,Title,Content 
           insert  into  Tree  (RootID,ParentID,OrderID,Indent,remark,Title,Content) 
                     select  RootID,@ID,OrderID+1,Indent  +  1 
                                   ,case  when  remark  is  null  then  cast(parentid  as  varchar) 
                                               else  remark  +  -  +  cast(parentid  as  varchar)   
                                     end   
                                   ,isnull(@Title,Re:    +  Title),@Content 
 , ;               &nb, sp;        from  Tree 
                       where  id=@id 
           --把帖子顶到上面: 
           update  Tree 
                 set  maxid  =  (select  max(id)   
                                             from  Tree 
                                         ) 
           where  rootid  =  (select  rootid   
                                               from  tree   
                                             where  id=@id 
                                         )   
     end


该程序用于

1.增加新贴: 

 AppSP_AddNew  0,第一个问题,地球是圆的吗?

2.回复帖子:

 AppSP_AddNew  1,Re:  第一个问题,地球是圆的!

这样,只需简单查询:

select  *,    remark    +  -  +  cast(parentid  as  varchar)  +  -  +  cast(id  as  varchar)  ,  space(indent)  +  [  
from  tree order  by  MaxID  desc,orderid
就可高效的实现帖子列表及其线索,级别等!

虽然维护时增加了一些工作量!

--相关DDL脚本:

CREATE  TABLE  [Tree]  (
 [ID]  [int]  IDENTITY  (1,  1)  NOT  NULL  ,
 [ParentID]  [int]  NULL  ,
 [RootID]  [int]  NULL  ,
 [OrderID]  [int]  NULL  ,
 [MaxID]  [int]  NULL  ,
 [Indent]  [int]  NULL  ,
 [Title]  [varchar]  (50),
 [Content]  [varchar]  (200)  ,
 [Remark]  [varchar]  (250)  ,
 CONSTRAINT  [PK_Tree]  PRIMARY  KEY    CLUSTERED  
 (
   [ID]
 )    ON  [PRIMARY]  
)  ON  [PRIMARY]


分页: [1] [2] [3] [4] [5] [6] [7] [8] [9]
(编辑:网站学习网)
Google
 ·上一篇文章: 屏幕保护程序下载
 ·下一篇文章: 局域网内打印机共享设置
 该篇文章的评论
 暂无相关评论
 姓名:  邮箱:
 内容:
                
 相关文章
 · Microsoft VBScript 运行
 · 整理一个asp多级树型分类
 · DW网页设计100例94:在线
 · 如何实现添加到收藏夹
 · ASP源码下载
 · ASP多媒体视频教程专区
 · MM_preloadImages()问题
 · 用ASP创建多栏选项列表S
 · 如何把ASP编写成DLL
 · Windows XP 中IIS5安装文
 · OpenSchema 方法详
 最新上传文章
 · 使用 cookie 
 · Asp Object 之
 · 建立企业信息化 &n
 · 80后IT四少:媒体塑造了我
 · 我国企业电子商务交易总
 · asp连接带有密码的acces
 · 互联网应用广泛 电
 · Adobe Illustrator
 · delphi程序打包安装制作
 · 企业邮件管理有新招&nbs
 · toolbar图标:ToolBar上的

服务说明 | 关于网站 | 联系我们 | 友情链接
网站学习网欢迎您!
http://www.studywebgood.com
浙ICP备07030755号 
联系邮箱:shuizhilang@126.com 如本网站侵犯了您的版权,请马上通知我.