当前位置: 首页 > news >正文

报表1-创建sql函数get_children_all

为了报表的统计,创建一个取实体所有下级的函数,名为get_children_all,传递实体代码和最大层级两个参数。

CREATE OR REPLACE FUNCTION get_children_all(entity_id UUID, max_level INT DEFAULT 6)
RETURNS TABLE(entity_child_id UUID, entity_child_type CHARACTER VARYING, entity_level INT, relation_type CHARACTER VARYING) AS $$
BEGINRETURN QUERYWITH RECURSIVE entity_tree AS (-- 基础查询:直接下级(所有关系类型)SELECT r.to_id as child_id,r.to_type as child_type,r.relation_type as rel_type,1 as levelFROM relation rWHERE r.from_id = entity_idUNION ALL-- 递归查询:继续查找下级(所有关系类型)SELECT r.to_id as child_id,r.to_type as child_type,r.relation_type as rel_type,et.level + 1 as levelFROM relation rINNER JOIN entity_tree et ON et.child_id = r.from_idWHERE et.level < max_level -- 使用传入的层级参数)SELECT DISTINCT child_id, child_type, level, rel_typeFROM entity_tree;
END;
$$ LANGUAGE plpgsql;

输入如下语句查询

select * From get_children_all('5fd7e540-67a3-11f0-a3ef-fd437db78ef1')

在这里插入图片描述

http://www.dtcms.com/a/394309.html

相关文章:

  • 9月20日 周六 农历七月廿九 哪些属相需要谨慎与调整?
  • godot实现tileMap地图
  • 【Unity+VSCode】NuGet包导入
  • QEMU虚拟机设置网卡模式为桥接,用xshell远程连接
  • Week 17: 深度学习补遗:Boosting和量子逻辑门
  • 【论文速递】2025年第13周(Mar-23-29)(Robotics/Embodied AI/LLM)
  • Webpack进阶配置
  • 【LeetCode 每日一题】3227. 字符串元音游戏
  • 【图像算法 - 26】使用 YOLOv12 实现路面坑洞智能识别:构建更安全的智慧交通系统
  • 009 Rust函数
  • IT疑难杂症诊疗室
  • 视频播放器下载推荐,PotPlayer‌,KMPlayer,MPC-HC,GOM Player‌VLC media player,MPV,
  • Day04 分治 递归 | 50. Pow(x, n)、22. 括号生成
  • (博主大回归)洛谷题目:P1986 元旦晚会 题解 (本题简)
  • Windows Docker 环境下 VLLM 大模型存储最优解:Docker-Desktop 实例目录与多容器协同挂载方案
  • Elasticsearch面试精讲 Day 20:集群监控与性能评估
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘pydantic’ 问题
  • 设置永不待机 系统语言
  • PWA(渐进式Web应用)
  • gdb文档_第二章
  • 基础IO
  • Linux开发工具
  • DIDCTF-2023陇剑杯
  • 软件设计师软考备战:第四篇 计算机网络技术
  • 基于 GEE 利用 Sentinel-1 SAR 数据计算标准化双极化水体指数(SDWI)实现水体智能识别
  • 120-armv8_a_power_management:高级架构电源管理指南
  • 【MySQL初阶】02-库的操作
  • Kafka面试精讲 Day 20:集群监控与性能评估
  • 【C语言】数字模式求和算法的巧妙实现:深入解析循环与累加的艺术
  • 关系型数据库对比