मान लें कि आप भाई-बहन प्राप्त करना चाहते हैं मान @p0
. का , आप एक साधारण सेल्फ-जॉइन का उपयोग कर सकते हैं:
SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0
यहां असमान खंड यह सुनिश्चित करता है कि आपके द्वारा खोजे गए मूल्य को शामिल न करते हुए आपको भाई-बहन मिले। इसे आवश्यकतानुसार हटा दें।
चूंकि आप रिकर्सन का जिक्र करते हैं, शायद आप संपूर्ण पेड़ . चाहते हैं मान @p0
. के पैरेंट से शुरू हो रहा है . किस स्थिति में, आप पुनरावर्ती CTE का उपयोग कर सकते हैं:
WITH parent AS (
SELECT Parent
FROM Table1
WHERE Child = @p0
), tree AS (
SELECT x.Parent, x.Child
FROM Table1 x
INNER JOIN parent ON x.Parent = parent.Parent
UNION ALL
SELECT y.Parent, y.Child
FROM Table1 y
INNER JOIN tree t ON y.Parent = t.Child
)
SELECT Parent, Child
FROM tree
SQL Fiddle उदाहरण अपने डेटा का उपयोग करना औररिकर्सिव सीटीई को प्रदर्शित करने के लिए अतिरिक्त डेटा के साथ