-1

我在 Oracle 9i 数据库表中有父子关系

喜欢:

parent | child  
1      | 2  
2      | 3
2      | 4
null   | 1
1      | 8

我有一个绝对的父母(例如孩子 1),我需要这个父母的所有孩子的 csv 列表或结果集。

4

2 回答 2

2

使用 SYS_CONNECY_BY_PATH 将为您提供以逗号分隔的整个层次结构:

SELECT SYS_CONNECT_BY_PATH(parent, ',') "PATH" 
  FROM table 
 START WITH child = 1 
CONNECT BY PRIOR child = parent; 

更多选项在这里

于 2009-10-08T14:22:06.457 回答
0

我们刚刚离开 Oracle,但我在 SQL Server 中为您编写了这个过程(它们应该非常相似,减去 CURSOR 声明)。

CREATE PROCEDURE ShowRelationships
@parent AS int
AS
 PRINT 'Parent =  ' + CAST(@parent AS varchar(3))

 DECLARE @child AS int;
 DECLARE cur_children CURSOR
 FOR
  SELECT child
  FROM PCREL
  WHERE parent = @parent;

 OPEN cur_children;
 FETCH NEXT FROM cur_children INTO @child;

 IF (@child IS NULL)
 BEGIN
  PRINT CAST(@parent AS varchar(3)) + ' has no children...';
 END

 WHILE @@FETCH_STATUS = 0
 BEGIN
  PRINT 'Child = ' + CAST(@child AS varchar(3))

  FETCH NEXT FROM cur_children INTO @child;
 END

 CLOSE cur_children;
 DEALLOCATE cur_children;


 SELECT TOP 1 @child = child
 FROM PCREL
 WHERE parent = @parent;

 EXECUTE ShowRelationships @child;

GO
于 2009-10-08T14:02:51.300 回答