六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 366|回复: 0

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

[复制链接]

升级  24%

2

主题

2

主题

2

主题

童生

Rank: 1

积分
12
 楼主| 发表于 2013-1-30 01:37:45 | 显示全部楼层 |阅读模式
PostgreSQL没有提供像Oracle等数据库的实用函数。
对于常见到菜单menus表:主要字段有id,parent_id...
一下是一个递归查询函数:
--查询结果集含自身CREATE OR REPLACE FUNCTION public.query_child_menus (integer) RETURNS SETOF public.menus AS'DECLAREitemid 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表字段相同。
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表