sql高手进

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:00:52
麻烦看看这个查询语句怎么写:

有这样的一张数据表,字段:id(int),name(string),parent_id(int)

这张表自身映射,每个元素的parent_id映射到其父节点的id

现在我获得了其中一个元素的name值,我要得到与其关联的所有子节点以及所有递归的子节点(就是还要获得他子节点的子节点,一直穷尽到没有子节点的元素)

这样的sql怎么写,拜托了~~~~~~~~~~~~

Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);

插入测试数据:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');

从Root往树末梢递归
select * from TBL_TEST
start with id=1
connect by prior id = pid

从末梢往树ROOT递归
select * from TBL_TEST
start with id=5
connect by prior pid = id