-1
我在Oracle 9i數據庫表的父子關係PLSQL甲骨文父子
,如:
parent | child
1 | 2
2 | 3
2 | 4
null | 1
1 | 8
我有絕對的父母(如子女1),我需要一個CSV文件列表或該父母的所有孩子的結果集。
我在Oracle 9i數據庫表的父子關係PLSQL甲骨文父子
,如:
parent | child
1 | 2
2 | 3
2 | 4
null | 1
1 | 8
我有絕對的父母(如子女1),我需要一個CSV文件列表或該父母的所有孩子的結果集。
我們剛剛離開了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
使用SYS_CONNECY_BY_PATH會給你分開整個層次逗號:
SELECT SYS_CONNECT_BY_PATH(parent, ',') "PATH"
FROM table
START WITH child = 1
CONNECT BY PRIOR child = parent;
更多選項here
你的問題是什麼:如何做分層查詢,如何將其格式化爲.csv文件,還是兩者? – APC 2009-10-02 10:39:44