मैं श्रेणीबद्ध पेड़ तालिकाउपयोग एसक्यूएल CTE तालिका पथ और सभी बच्चों को शामिल करने के लिए
GO
DROP TABLE #tbl
GO
CREATE TABLE #tbl (Id int , ParentId int)
INSERT INTO #tbl (Id, ParentId) VALUES (0, NULL)
INSERT INTO #tbl (Id, ParentId) VALUES (1, 0)
INSERT INTO #tbl (Id, ParentId) VALUES (2, 1)
INSERT INTO #tbl (Id, ParentId) VALUES (3, 1)
INSERT INTO #tbl (Id, ParentId) VALUES (4, 2)
INSERT INTO #tbl (Id, ParentId) VALUES (5, 2)
INSERT INTO #tbl (Id, ParentId) VALUES (6, 3)
INSERT INTO #tbl (Id, ParentId) VALUES (7, 3)
GO
कौन सा पेड़
0
+- 1
+- 2
+- 4
+- 5
+- 3
+- 6
+- 7
निम्नलिखित CTE रिकर्सिव तालिका का उपयोग करने के लिए नक्शे, मैं पथ कैसे प्राप्त कर सकते हैं और निम्नलिखित है चयनित नोड के सभी बच्चे भी। उदाहरण 2
इनपुट के रूप में होने के लिए, मैं कैसे डेटा निम्नलिखित प्राप्त कर सकते हैं
Id, ParentID
-------
0, NULL
1, 0
2, 1
4, 2
5, 2
मैं जानता हूँ कि मैं बयान
WITH RecursiveTree AS (
-- Anchor
SELECT *
FROM #tbl
WHERE Id = 2
UNION ALL
-- Recursive Member
SELECT Parent.*
FROM
#tbl AS Parent
JOIN RecursiveTree AS Child ON Child.ParentId = Parent.Id
)
SELECT * FROM RecursiveTree
और साथ निम्नलिखित के साथ (पथ प्राप्त) पेड़ में पार कर सकते हैं (यदि संभव हो आदेश दिया) कैसे गठबंधन करने के लिए इन दोनों आदेशों: बयान के बाद, पेड़ में नीचे पार
WITH RecursiveTree AS (
-- Anchor
SELECT *
FROM #tbl
WHERE Id = 2
UNION ALL
-- Recursive Member
SELECT Child.*
FROM
#tbl AS Child
JOIN RecursiveTree AS Parent ON Child.ParentId = Parent.id
)
SELECT * FROM RecursiveTree
प्रश्न (सभी बच्चों प्राप्त) एक में?
+1 के मिलन का उपयोग अच्छा विवरण, DDL, DML और परीक्षण डाटा उपलब्ध कराने के लिए। –