整理一个asp多级树型分类问题的解决方法(2)

来源:csdn 时间:2007-10-17 18:38:00 

下面是江一在线的回复。

这是一个多级的树(TREE)罢了,其实原理是类似于俺们这个论坛的结构,俺们是这样来实现的

主要数据结构
[  id  ]                                    长整型
[  num_replied  ]                  双精度型
[  num_followed  ]                双精度型
[  num_lasttime  ]                双精度型
 

当一个客户是最上层的:一级客户时,应该是
num_replied=num_followed

如果是二级的客户应该是:
num_replied=新的时间码
num_followed=上一级的num_replied
也就是说呢,二级或者并非一级分类的客户应该是num_replied<>num_followed的

而新增加一个客户或者一个下级客户时
更新num_lasttime的时间码,通过这个来保证整个客户树的完整
也就是说,只要num_lasttime相同的,必定是同一个主分类的客户

这样来得出一个完整的客户树是很容易的
第一步,得到该分类的num_lasttime
第二步,根据两个时间码,整理出整个树形结构

但问题是:假如我们要得出某一个客户的所有上级或者所有下级怎么办?

根据上面的数据结构,一个客户是可以存在并列关系的同级客户的,只要他不是一级分类
也就是说,所有num_replied相同,并且num_lasttime相同的客户都是一个级别的;但他们可能并不属于同一个上级客户,所有,上面的结构不能直接来完成你的要求,进行如下改动:

改动后的数据结构
[  id  ]                                    长整型
[  mark  ]                                长整型
[  num_replied  ]                  双精度型
[  num_followed  ]                双精度型
[  num_lasttime  ]                双精度型
 

增加了一个MARK字段,用于表示这个客户的级数,一级客户用0表示,二级用1表示,依此类推……
那么,得出一个客户的所有下级可能这样来
1.num_lasttime相同,表示同一个一级客户
2.mark>该客户的mark
3.num_replied>该客户的num_replied 

到这里,得出一个客户的所有上级你也应该知道怎么做了吧

如果你觉得太麻烦,希望像你的数据结构那样,用一个字段来表示隶属关系
我上次已经说过了,那你得学习如何科学高效的进行编码,我们可以来32位的二进制串来表示一个客户代号

比如:
0111  0010  0001  0100  0111  0001  0101  0111
前四位用来表示一级的客户
如果是一级的客户,那他的后面应该都是0
也就是类似:0001  0000  0000  0000  0000  0000  0000  0000
如果是二级的客户,第二段应该有数字,比如:
0001  0000  0010  0000  0000  0000  0000  0000
如果是再下一级的,就还有:
0001  0000  0010  0000  0100  0000  0000  0000
似次类推,可惜这种算法要用到:位与计算,而这在VBS和ACCESS中都不支持,可惜。

标签:树,分类,asp
0
投稿

猜你喜欢

  • 解密SQL Server数据库系统的编译

    2009-03-16 17:33:00
  • 打造设计你自己的字体

    2007-12-12 13:16:00
  • 仿淘宝星级评分效果

    2010-09-03 18:37:00
  • 给验证码增加干扰的杂点

    2008-05-16 11:34:00
  • [翻译]网页设计中的模式窗口

    2009-05-29 18:00:00
  • 数字人组件反写[asp组件开发实例1]

    2009-06-09 13:10:00
  • 评论是倒序好还是顺序好?

    2007-11-09 10:40:00
  • 做了CDN加速的ASP网站获取用户真实IP程序

    2011-02-16 10:59:00
  • 搞定MySQL数据库中文模糊检索问题

    2007-09-17 12:36:00
  • 如何将数据访问页绑定到断开连接的 ADO 记录集上?

    2009-12-03 20:07:00
  • SQL Server 2005五个动态管理对象

    2009-02-24 17:41:00
  • jQuery中$.ajax的实现解析

    2008-07-20 13:11:00
  • 如何获取浏览器的更多信息?

    2009-11-23 20:48:00
  • jQuery点击改变链接的文本

    2010-03-19 18:11:00
  • 如何做一个可以让人家申请使用的计数器?

    2010-07-11 21:17:00
  • CSS样式表中SPAN和DIV的区别

    2007-10-21 08:47:00
  • 用户是如何浏览你的网站的

    2010-05-03 14:26:00
  • 通过SQL Server的位运算功能巧妙解决多选查询方法

    2012-01-29 17:54:35
  • 一个奇怪的CSS现象

    2010-02-10 12:28:00
  • ASP利用TCPIP.DNS组件获得域名对应的IP

    2009-11-07 19:21:00
  • asp之家 网络编程 m.aspxhome.com