सभी संभावित पैरेंट्स को एक फ़ील्ड में पाएँ
इस अध्याय का आपका अंतिम कार्य है: किसी एक ID से शुरू करके सभी संभावित पैरेंट्स ढूँढना और मिली हुई सभी पीढ़ियों की IDs को एक ही फ़ील्ड में जोड़ना।
इसके लिए, आप सभी संभावित सदस्यों को रिकर्सिव तरीके से खोजेंगे और यह जानकारी एक फ़ील्ड में जोड़ेंगे। IDs को एक स्ट्रिंग में मिलाने के लिए आपको CAST() ऑपरेटर का उपयोग करना होगा।
आप ID = 290 से शुरू करते हुए सभी फैमिली मेम्बर्स खोजेंगे। टेबल family में कुल 300 एंट्रीज़ हैं।
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Hierarchical और Recursive Queries
अभ्यास निर्देश
- शुरुआती बिंदु के रूप में 290 का
ParentIDसेट करें। - यदि
CASEऑपरेशन मेंParent.ID = ''है, तोParentफ़ील्ड को वर्तमानParentIDपर सेट करें। - यदि
CASEऑपरेशन मेंParent.ID <> ''है, तो हर iteration में वर्तमान Parent में Parent ID जोड़ें। - परिभाषित CTE से
NameऔरParentसेलेक्ट करें।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
WITH tree AS (
SELECT
ID,
Name,
ParentID,
CAST('0' AS VARCHAR(MAX)) as Parent
FROM family
-- Initialize the ParentID to 290
WHERE ___ = ___
UNION ALL
SELECT
Next.ID,
Next.Name,
Parent.ID,
CAST(CASE WHEN Parent.ID = ''
-- Set the Parent field to the current ParentID
THEN(CAST(Next.___ AS VARCHAR(MAX)))
-- Add the ParentID to the current Parent in each iteration
ELSE(Parent.Parent + ' -> ' + CAST(Next.___ AS VARCHAR(MAX)))
END AS VARCHAR(MAX))
FROM family AS Next
INNER JOIN tree AS Parent
ON Next.ParentID = Parent.ID)
-- Select the Name, Parent from tree
SELECT ___, ___
FROM ___;