实用的傻瓜型无限分类法
时间:2007-06-20
来源:互联网
             看过各种各样的无限分类方法,在头昏眼花之际,突然觉悟――分类这东西,一旦分好,几乎就不改变了。也就是说在数据库中,什么inset、update的操作很少发生,绝大部分都是select操作。既然这样的话,我们可以在添加修改的时候做多一些额外的事,让查询尽量简单。让查询简单的一种方法是把所有的子类紧挨着放在父类的下面。这样的话,数据表只需要一个用来在查询的时候排序的order和一个表示级别的level字段就足够完成分类功能了。假设表如下:
create table `class` ( `id` int (10) NOT NULL AUTO_INCREMENT , `order` int (11) , `level` int (5) , `other` varchar (100) , PRIMARY KEY ( `id` ) )
在每次添加分类时,如果加在最后面,order值就是表中最大的那个order+1,如果插在中间,order就是上一个分类的order+1,然后后面的所有分类的order+1。至于是子类父类,就看level值了,反正order比自己小并且level比自己小(level一般是越小级别越大,0表示顶级)的最接近自己的那个就是老爹。
至于查询嘛,查询所有的时候只要"select * from class order by `order`"就行了;
如果只查询其中一个类和他的所有子类的话,会比较麻烦一点点,首先要找出order比自己大level和自己相同的那个类的order号,假设等于nextorder吧,然后where order<nexeorder and order>=selforder就找出来了,sql厉害的用子查询什么的也可以一下子找出来。
[ 本帖最后由 aninfeel 于 2007-6-19 18:19 编辑 ]
            create table `class` ( `id` int (10) NOT NULL AUTO_INCREMENT , `order` int (11) , `level` int (5) , `other` varchar (100) , PRIMARY KEY ( `id` ) )
在每次添加分类时,如果加在最后面,order值就是表中最大的那个order+1,如果插在中间,order就是上一个分类的order+1,然后后面的所有分类的order+1。至于是子类父类,就看level值了,反正order比自己小并且level比自己小(level一般是越小级别越大,0表示顶级)的最接近自己的那个就是老爹。
至于查询嘛,查询所有的时候只要"select * from class order by `order`"就行了;
如果只查询其中一个类和他的所有子类的话,会比较麻烦一点点,首先要找出order比自己大level和自己相同的那个类的order号,假设等于nextorder吧,然后where order<nexeorder and order>=selforder就找出来了,sql厉害的用子查询什么的也可以一下子找出来。
[ 本帖最后由 aninfeel 于 2007-6-19 18:19 编辑 ]
作者: aninfeel 发布时间: 2007-06-19
             没有看明白
楼主能给个演示代码吗
            楼主能给个演示代码吗
作者: sanler 发布时间: 2007-11-15
            作者: luzhou 发布时间: 2007-11-15
            作者: aaabbbaaa 发布时间: 2007-11-16
             楼主最好发个实例上来,大家共同研究一下,还有数据库中的字段最好不要是:select,from,where,order,limit等这些SQL关键字,以免出现错误!            
            作者: forest 发布时间: 2007-11-16
             这种方法查询进确实是最简单的,但麻烦在编辑的时候很麻烦,有做过            
            作者: dzjzmj 发布时间: 2007-11-16
 相关阅读 更多  
      
    热门阅读
-  
 office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
          阅读:74
 -  
 如何安装mysql8.0
          阅读:31
 -  
 Word快速设置标题样式步骤详解
          阅读:28
 -  
 20+道必知必会的Vue面试题(附答案解析)
          阅读:37
 -  
 HTML如何制作表单
          阅读:22
 -  
 百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
          阅读:31
 -  
 ET文件格式和XLS格式文件之间如何转化?
          阅读:24
 -  
 react和vue的区别及优缺点是什么
          阅读:121
 -  
 支付宝人脸识别如何关闭?
          阅读:21
 -  
 腾讯微云怎么修改照片或视频备份路径?
          阅读:28
 















