热门标签 | HotTags
当前位置:  开发笔记 > 开放平台 > 正文

关于分类树形表结构的层数字段问题

有这样一个表:type_idtype_nametype_fathertype_layer1总类别00000002类别110100003类别1.120101
有这样一个表:
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 个解决方案

#1


在蓝色理想看过一个无限分类的 (是不是原创不知道了)
思路是

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)这样就可以了~

我表达的不清除你可以百度搜索一下

#2


10 四轮玩具电车  010202 
属于四轮车 所以是 10 (四轮车  010000)  
又是电车 20 (四轮电车  010200)
第三分类  四轮玩具电车  010202  前面有个   四轮公交电车  010201

#3


引用 2 楼 qq303636541 的回复:
10 四轮玩具电车 010202 
属于四轮车 所以是 10 (四轮车 010000)  
又是电车 20 (四轮电车 010200)
第三分类 四轮玩具电车 010202 前面有个 四轮公交电车 010201


其实这么分析的话我是能够得到答案啊,问题是我需要一个通用函数来得到结果啊,就是
说我插入一条记录的时候,这个字段的值是通过这个函数得到的

#4


引用 1 楼 g125989100 的回复:
在蓝色理想看过一个无限分类的 (是不是原创不知道了)
思路是

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……

这个思路比我那个好,我要去研究一下,谢谢哈

推荐阅读
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
  • 爱奇艺视频下载指南
    随着百度在视频领域的不断扩展,爱奇艺的内容库日益丰富,涵盖了大量新番动画、电影、电视剧和综艺节目。本文将详细介绍如何通过爱奇艺客户端下载视频,帮助用户轻松实现离线观看。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • CATSearch是一个针对CATIA V5和3DEXPERIENCE平台的开源二次开发项目,由硬核小青年发起并维护。该项目旨在解决3DE搜索功能不稳定的问题,通过API调用提供更快速、准确的搜索体验。本文将详细介绍该插件的功能及使用方法。 ... [详细]
  • 探讨如何使用工具或方法来自定义百度网盘的提取码,以提高文件分享的安全性和便捷性。 ... [详细]
  • 本文介绍如何使用JPA Criteria API创建带有多个可选参数的动态查询方法。当某些参数为空时,这些参数不会影响最终查询结果。 ... [详细]
  • 深入理解Java中的Collection接口与Collections工具类
    本文详细解析了Java中Collection接口和Collections工具类的区别与联系,帮助开发者更好地理解和使用这两个核心组件。 ... [详细]
  • Babylon.js 实例展示
    探索 Babylon.js 的强大功能,通过全屏演示体验其卓越性能。本文提供在线文档链接和默认渲染管线的源码调试地址,帮助您深入了解 Babylon.js 的工作原理。 ... [详细]
  • 本文详细介绍了MicroATX(也称Mini ATX)和MATX主板规格,探讨了它们的结构特点、应用场景及对电脑系统成本和性能的影响。同时,文章还涵盖了相关操作系统的实用技巧,如蓝牙设备图标删除、磁盘管理等。 ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
author-avatar
堕落戥囝_631
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有