找回密码
 立即注册

QQ登录

只需一步,快速开始

olookok 活字格认证
论坛元老   /  发表于:2024-11-18 11:19  /   查看:85  /  回复:2
递归查下 经常用在  存在上下级关系的查询中。

比如产品分类,部门分类,项目分类 等等。查下上级的时候,要把包含的下级分类所有数据都查下出来。

通常情况下用   分类=分类  或者 分类.上级分类 =分类 或者 分类.上级分类.上级分类 =分类 这样  逐层的进行查下。
如果知道具体层级,这样设置很直观。但是如果不知道 万一层级超过了设置查下的层级数,那么就会出现问题。



image.png753919982.png

通过 sql语句 可以进行递归查下。这样,不管有多少层级,都可以轻松应对。

详见工程文件。

递归查下.fgcc (667.43 KB, 下载次数: 2, 售价: 30 金币)

2 个回复

倒序浏览
phoben讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:前天 11:42
沙发
这种情况如果数据量不是特别大,比如几千上万条,其实建议使用“闭包表”来实现,用空间换效率。
做递归查询,有个问题是,有些页面绑定值、筛选值时,无法提前预知关联层数,导致无法查询和筛选需要的数据。

比如:地点表(树形扁平表)
image.png593552550.png

闭包表
image.png448230895.png

闭包表的原理就是把本来无限嵌套的树形表,通过扁平化,把每个节点的子级都展开存储。
也就是每个节点不管有多少子级、孙级、孙孙级,都扁平化到表里。
这样做主要是为了避免使用递归来查询,大幅提高查询效率。

用的时候,只需要查询某个节点,然后就能得到所有子级以及离它的距离(深度)。
回复 使用道具 举报
137294886
金牌服务用户   /  发表于:前天 12:08
板凳
感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部