我試圖寫在SQL Server中,基本上列出了從給定父父子層次遞歸查詢。父母可以有多個孩子,孩子可以屬於多個父母,因此它以多對多關係存儲。SQL服務器 - 獲取行的所有兒童在許多一對多的關係?
我修改下面的查詢從另一個多少有些相關的問題,但是這不走一路攀升到樹,只選擇第一級子......
DECLARE @ObjectId uniqueidentifier
SET @ObjectId = '1A213431-F83D-49E3-B5E2-42AA6EB419F1';
WITH Tree AS
(
SELECT A.*
FROM Objects_In_Objects A
WHERE A.ParentObjectId = @ObjectId
UNION ALL
SELECT B.*
FROM Tree A
JOIN Objects_In_Objects B
ON A.ParentObjectId = B.ObjectId
)
SELECT *
FROM Tree
INNER JOIN Objects ar on tree.ObjectId = ar.ObjectId
有誰知道如何修改查詢一路走下'樹'?或者這是不可能的使用上述結構?
對象
列:ObjectId
| Name
Objects_In_Objects
列:ObjectId
| ParentObjectId
的樣本數據:
對象
ObjectId | Name
1A213431-F83D-49E3-B5E2-42AA6EB419F1 | Main container
63BD908B-54B7-4D62-BE13-B888277B7365 | Sub container
71526E15-F713-4F03-B707-3F5529D6B25E | Sub container 2
ADA9A487-7256-46AD-8574-0CE9475315E4 | Object in multiple containers
對象在對象
ObjectId | ParentObjectId
ADA9A487-7256-46AD-8574-0CE9475315E4 | 71526E15-F713-4F03-B707-3F5529D6B25E
ADA9A487-7256-46AD-8574-0CE9475315E4 | 63BD908B-54B7-4D62-BE13-B888277B7365
63BD908B-54B7-4D62-BE13-B888277B7365 | 1A213431-F83D-49E3-B5E2-42AA6EB419F1
71526E15-F713-4F03-B707-3F5529D6B25E | 1A213431-F83D-49E3-B5E2-42AA6EB419F1
不,實際上根本沒有結果:) – ReFocus
@ReFocus:更新了我的回覆,我把你的各種表格混淆了:-)試了這個 - 似乎產生了我期望的輸出... –
這個工程,太棒了! – ReFocus