求一个取得一棵树的所有孩子节点的sql文
时间:2011-05-03
来源:互联网
在工作中遇到一个问题,关于取得一棵树的所有孩子节点.
脑袋想破了,也没有想起解决方法.特来请教大侠们.
谢谢!
个表结构如下:
id | parent | flag
--------+-------- +--------
1011 101 5
1012 101 5
101 10 2
10 1 1
1 7
想得到的结果如下:
1.当flag=5时,结果:
oldid | id | parent | flag
---------+--------+-------- +--------
1011 1011 101 5
1012 1012 101 5
2.当flag=2时,结果:
oldid | id | parent | flag
---------+--------+-------- +--------
101 1011 101 5
101 1012 101 5
101 101 10 2
3.当flag=1时,结果:
oldid | id | parent | flag
---------+--------+-------- +--------
10 1011 101 5
10 1012 101 5
10 101 10 2
10 10 1 1
也就是当指定flag时,
先查出对应的id,再以这个id去查询下面所有的子节点.
最后出来的数据,第一列数据,就是先查出来的id.
flag 最好用in的方式
如flag in ('1','3','5')
脑袋想破了,也没有想起解决方法.特来请教大侠们.
谢谢!
个表结构如下:
id | parent | flag
--------+-------- +--------
1011 101 5
1012 101 5
101 10 2
10 1 1
1 7
想得到的结果如下:
1.当flag=5时,结果:
oldid | id | parent | flag
---------+--------+-------- +--------
1011 1011 101 5
1012 1012 101 5
2.当flag=2时,结果:
oldid | id | parent | flag
---------+--------+-------- +--------
101 1011 101 5
101 1012 101 5
101 101 10 2
3.当flag=1时,结果:
oldid | id | parent | flag
---------+--------+-------- +--------
10 1011 101 5
10 1012 101 5
10 101 10 2
10 10 1 1
也就是当指定flag时,
先查出对应的id,再以这个id去查询下面所有的子节点.
最后出来的数据,第一列数据,就是先查出来的id.
flag 最好用in的方式
如flag in ('1','3','5')
作者: yanxt 发布时间: 2011-05-03
建立测试表:
CREATE TABLE testtable
(
id character varying(20) NOT NULL,
parent character varying(20),
flag character(1)
)
插入数据:
insert into testtable(id,parent,flag) values('1011','101','5');
insert into testtable(id,parent,flag) values('1012','101','5');
insert into testtable(id,parent,flag) values('101','10','2');
insert into testtable(id,parent,flag) values('10','1','1');
insert into testtable(id,parent,flag) values('1',null,'7');
CREATE TABLE testtable
(
id character varying(20) NOT NULL,
parent character varying(20),
flag character(1)
)
插入数据:
insert into testtable(id,parent,flag) values('1011','101','5');
insert into testtable(id,parent,flag) values('1012','101','5');
insert into testtable(id,parent,flag) values('101','10','2');
insert into testtable(id,parent,flag) values('10','1','1');
insert into testtable(id,parent,flag) values('1',null,'7');
作者: yanxt 发布时间: 2011-05-03
这个需要用 function 吧, 一个SQL估计不行。
作者: tanfeng3 发布时间: 2011-05-03
本帖最后由 yanxt 于 2011-05-03 17:00 编辑
用function 或者 存储过程都可以.
唉!
对PostgreSQL 不熟,不会写!
谢谢
用function 或者 存储过程都可以.
唉!
对PostgreSQL 不熟,不会写!
谢谢
作者: yanxt 发布时间: 2011-05-03
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28