作者:堕落戥囝_631 | 来源:互联网 | 2023-05-17 13:34
有这样一个表:
type_id type_name type_father type_layer
1 总类别 0 000000
2 类别1 1 010000
3 类别1.1 2 010100
10 类别1.1.1 3 010101
4 类别1.2 2 010200
5 类别2 1 020000
6 类别2.1 5 020100
7 类别3 1 030000
8 类别3.1 7 030100
9 类别3.2 7 030200
其中最后一个字段代表分类的层树,初始值为000000,从左
往右,用每2个0去表示一个层,这样的话,最多能表示3层,
每层最多能表示99个类,请问这个字段的值该如何得到呢?
举个例子:
id name father layer
1 车 0 000000
2 四轮车 1 010000
3 两轮车 1 020000
4 四轮汽车 2 010100
5 四轮小汽车 4 010101
6 四轮大客车 4 010102
7 四轮大卡车 4 010103
8 四轮电车 2 010200
9 四轮公交电车 8 010201
…………
类似上面这样的结构,如果我现在要插入一条记录:
10 四轮玩具电车 8 …………
这里的layer这个字段的值该如何得到呢?
4 个解决方案
在蓝色理想看过一个无限分类的 (是不是原创不知道了)
思路是
id name path parentid
1 1 0,1 0
2 1 0,1.2 1
3 1 0,1.2,3 2
这个很是方便的
parentid 基类(就是顶层的分类)是0
path 上一层id(父类id)的path+当前id
读取的时候相当方便
如果你想读分类等于2的 就直接instr(path,2)这样就可以了~
我表达的不清除你可以百度搜索一下
10 四轮玩具电车 010202
属于四轮车 所以是 10 (四轮车 010000)
又是电车 20 (四轮电车 010200)
第三分类 四轮玩具电车 010202 前面有个 四轮公交电车 010201