`
tou3921
  • 浏览: 68680 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

树形结构存储的表(自身关联)查询.PostgreSQL

    博客分类:
  • DB
阅读更多

PostgreSQL没有提供像Oracle等数据库的实用函数。

对于常见到菜单menus表:主要字段有id,parent_id...

一下是一个递归查询函数:

--查询结果集含自身
CREATE OR REPLACE FUNCTION public.query_child_menus (integer) RETURNS SETOF public.menus AS'
DECLARE
itemid ALIAS FOR $1;
itemrecord record;
BEGIN
    SELECT s.* INTO itemrecord FROM public.menus s  where id=itemid;
    RETURN NEXT itemrecord;
     IF (select count(1) from public.menus s where s.parent_id=itemrecord.id) >0  THEN
            for itemrecord in SELECT s.* FROM public.menus s  where s.parent_id=itemrecord.id LOOP
            	for itemrecord in select * from public.query_child_menus (itemrecord.id) LOOP
            		RETURN NEXT itemrecord;
            	end LOOP;
            end LOOP;
     END IF;
    RETURN;
END;'
LANGUAGE 'plpgsql'

 用法:select * from public.query_child_menus (3);

结果集字段与menus表字段相同。

 

0
0
分享到:
评论

相关推荐

    数据库控制树形结构的生成

    数据库中的树形结构是一种常见的数据组织方式,尤其在索引、查询优化以及关系数据库的层次模型中发挥着关键作用。这种结构以节点和边的形式表示数据,其中每个节点代表一个数据项,而边则表示节点之间的关系。在本文...

    用数据库实现树形结构

    在IT领域,数据库是存储和管理数据的核心工具,而树形结构是一种常见且重要的数据组织方式。树形结构能够有效地模拟现实世界中的层次关系,如组织结构、文件系统目录等。本文将深入探讨如何利用SQL语言在关系型...

    edb数据库保存树形框分支结构源码

    6. **数据库设计**:为了存储树形结构,可能需要设计一种特殊的表结构,例如使用自引用关联或者使用adjacency list模型。另外,层次查询语言(如PostgreSQL的`WITH RECURSIVE`)可能被用来遍历树形结构。 7. **编程...

    springboot+mybatis-plus+gradle+mysql+swagger基础增删改查、树形查询

    树形查询是指在数据库中查询具有层级关系的数据,例如部门结构、菜单系统等。MyBatis Plus提供了树形查询的支持,可以通过递归方式或者父子ID关联方式实现。在本项目中,可能涉及到的树形查询场景如组织架构、分类...

    bcb xe5的串口通讯及Treeview数据库树形显示

    在查询时,可能需要用到递归查询或者存储过程来获取整个树形结构。 “从数据库里面查询树形节点及其子节点”涉及到SQL查询技巧,例如使用JOIN语句或者递归查询(如在支持递归查询的数据库系统中,如PostgreSQL或SQL...

    hibernate实现递归查询

    递归查询通常用于处理树形结构的数据,例如组织结构、菜单系统或者文件目录等。 首先,我们需要了解递归的基本概念。递归是一种算法,它通过调用自身来解决问题。在查询数据库时,递归查询意味着我们查询一个记录,...

    数据库设计之递归树查询

    `WITH`语句配合递归选项,可以实现递归查询,非常适合处理树形结构数据。 三、`WITH RECURSIVE`语法 在支持`WITH RECURSIVE`的数据库(如PostgreSQL、SQL Server)中,递归查询的通用语法如下: ```sql WITH ...

    PostgreSQL图(graph)的递归查询实例

    在树形结构中,每个节点最多有一个父节点,但可以有多个子节点,而图结构中,节点可以有任意数量的父节点和子节点,甚至可能存在循环(loop)。这种循环可能导致无限递归,因此在进行图的递归查询时,我们需要采取...

    php基础知识树形图

    本文将围绕“PHP基础知识树形图”展开,深入探讨PHP的核心概念、语法、数据类型、控制结构、函数、数组、类与对象、错误与异常处理以及文件操作等关键知识点。 1. **PHP基础概念** - PHP是嵌入在HTML中的,用于...

    论坛社区DVHome树形论坛 v2.0.1a-dvhomebbs201a.zip

    这款论坛软件以树形结构展示讨论版块,使得信息层次清晰,用户可以更方便地浏览和参与话题。下面我们将深入探讨这款论坛系统的特性、功能以及可能涉及的技术知识点。 首先,树形结构在论坛中的应用是其核心特点之一...

    PostgreSQL简单介绍

    3. **层级数据库**: 层级数据库是早期的一种数据库组织形式,其结构类似于树形结构,每个节点都有一个父节点(除了根节点),而一个节点可以有多个子节点。 4. **面向对象数据库**: 面向对象数据库是以面向对象编程...

    省市县sql文件,,,,

    在数据库设计中,这样的地理位置表往往采用树形结构来表示,通过`parent_id`字段连接上级节点,实现多级嵌套。这种设计允许快速查找某个地区的所有子地区,或者找到某个地区的上级地区。 使用这类sql文件时,一般...

    多选菜单树Dtree

    5. **数据库设计**: 数据存储通常涉及关系型数据库(如MySQL、PostgreSQL)或NoSQL数据库(如MongoDB),设计合理的数据表结构,以支持高效的查询和更新操作。 6. **状态管理**: 对于复杂的应用,可能需要引入状态...

    在数据库中存储层次数据

    存储这样的数据时,可以创建一个表格,包含节点标题和其父节点的标题,用于构建树形结构。 为了展示这个树结构,可以编写一个递归函数`display_children`。该函数接收当前节点(父节点)和层级深度作为参数。它首先...

    省市区县乡镇四级联SQL数据.zip

    首先,"四级联动"是指在数据结构中,省、市、区县和乡镇被组织成一个层次结构,每一级都是上一级的子级,这种关系在数据库设计中通常用树形结构来表示。在SQL中,这种结构可以通过递归自关联或者层次查询来实现。 1...

    进销存管理系统.zip

    - 商品分类:对商品进行分类管理,可以使用树形结构或关联关系来实现,这需要理解Java集合框架和数据库的表关系。 2. 供应商管理模块: - 供应商信息维护:记录供应商的基本信息,如名称、联系方式、信用等级等。...

    按照名字找地址按照地址找名字工程

    - **Trie树**:对于大量名字查询,Trie树(字典树)能有效减少查找时间,通过构建以名字字符为节点的树形结构。 2. 数据库设计: - **关系型数据库**:如MySQL、PostgreSQL等,可以创建姓名和地址两个字段的表,...

    Java-springboot疫情网课管理系统毕业设计源码(源代码+论文)

    8. **课程分类管理、课程表管理、课程信息管理**: 课程的分类、安排和详情展示,可能使用树形结构存储课程类别,课程表可能通过时间表视图展示,课程信息则包括课程介绍、教师信息、学分等。 9. **作业信息管理**: ...

    tree+db

    在IT行业中,"tree+db"通常指的是使用数据库数据来构建树形菜单的场景。这种技术常见于Web应用和桌面软件中,它可以帮助用户以层级结构直观地浏览和操作大量数据。在这里,"treeview"标签进一步确认了我们讨论的是一...

Global site tag (gtag.js) - Google Analytics