使用MSSQL,我試圖遍歷一個父子關係的表。我需要我的結果集,以便以正確的縮進方式獲取所有元素,直到最後一片葉子,如下所示。MSSQL中的遞歸分層遍歷
父件36有2個孩子17和18的每一個孩子17和18有一個更多的孩子給他們26,42分別
36 - 17
17 - 26
36 - 18
18 - 42
但我的遞歸在數據方面的工作正常遍歷,但順序明智,它是失敗的。我的遞歸查詢給我下面的輸出
36 - 17
36 - 18
17 - 26
18 - 42
它把各級一次,將它們存儲在一個記錄,然後通過這些各層次的孩子的穿越。
Oracle的「以前連接」似乎工作正常,但MSSQL不是。我粘貼我所用
WITH SRC (Level, PARITEMID, CHIITEMID) AS
(
SELECT
0 as Level,
PI.pitem_id as PARITEMID,
CI.pitem_id as CHIITEMID
FROM PI, CI JOIN <Condition> where PI.PITEM_ID =
UNION ALL
SELECT
Level + 1,
PI1.pitem_id as PARITEMID,
CI1.pitem_id AS CHIITEMID
FROM PI1, CI1 JOIN <Condition>
)
Select * from SRC
的樣品有什麼我需要在SRC我下令它獲得做的,或者是有根本上有毛病遞歸本身?
像往常一樣,如果你需要設置你必須指定'的最終結果一定順序ORDER BY'。如果沒有ORDER BY子句,結果集中的行可能以任何順序返回。 –
這是一個父母的孩子關係。沒有我可以預先指定的訂單。如果你提供了一些樣本數據(十幾行應該足夠了),最好以「CREATE TABLE」和「INSERT」語句的形式提供,並且你可以提供一個可行的ORDER,我可以通過它來獲得每個層次結構,直到葉子 – Srikanth
預期的查詢結果,你很可能會得到很好的答案。如果您使用您使用的SQL Server版本添加標籤,它也可能有所幫助。 –