帮忙分写段sql,pgsql也行,谢谢了

kakai 发布于 2013/09/06 12:38
阅读 288
收藏 2
有个商品类型表,结构如下 id 属性名 所属父级类型id 1 服饰鞋帽 0 2 内衣 1 3 保暖内衣 2 4 背心 2 5 保暖内衣1 3 6 背心1 4 父级为0表示没有父级类型,请问给出一个已知类型id怎么查询出它下面的所有子孙类型的记录呢? 比如给出2 ,那么查询出来的就是id为2,3,4,5,6的记录。 求各位大神解难,递归性的存储过程也行,谢谢了
加载中
0
h
hy8hy8

问问题的时候能不能把文字好好排版一下……

我自己简化了下数据结构,只有Id和ParentId

递归向下,根据ID查询所有子数据

with recursive tmp
as
(
   select * from tree where Id = 2
   union
   select t.* from tree t inner join tmp on t.ParentId = tmp.Id
)
select * from tmp;

递归向上,跟据ID查询所有父数据

with recursive tmp
 as
 (
    select * from tree where Id = 5
    union
    select t.* from tree t inner join tmp on t.Id = tmp.ParentId
 )
 select * from tmp;

 

 

kakai
kakai
再次感谢,你的方法很好
kakai
kakai
先谢谢了。抱歉,我在手机上发的,输入时是用空格,回车排好了的,显示时就全没了
返回顶部
顶部