मेरा सुपरवाइज़र कौन है?
इस अभ्यास में, हम हायरार्की के सबसे ऊपर वाले बॉस से लेकर हायरार्की के सबसे नीचे वाले कर्मचारियों तक का path निकालना चाहते हैं। इस कार्य के लिए, आपको हर चरण में मिली जानकारी को एक ही फ़ील्ड में जोड़ना होगा। आप यह IDs को number से string में बदलकर CAST() के ज़रिए जोड़कर कर सकते हैं। उदाहरण के लिए, CAST(ID AS VARCHAR(MAX)) number टाइप की ID को char टाइप में बदलता है।
अब कार्य यह है कि कर्मचारियों Chris Feierabend जिसकी ID=18 है और Jasmin Mentil जिसकी ID=16 है, उनके लिए संगठन के सबसे ऊपर तक का path ढूँढें। आउटपुट इस तरह दिखना चाहिए: boss_first_level -> boss_second_level .... चयन कर्मचारियों की IDs का होना चाहिए, उनके नामों का नहीं।
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Hierarchical और Recursive Queries
अभ्यास निर्देश
- रिकर्शन की शुरुआती शर्त के साथ
Pathको सुपरवाइज़र (0) कीIDपर इनिशियलाइज़ करें। - एंकर मेंबर को
UNIONकरें और रिकर्सिव मेंबर के फ़ील्ड्स (ID,Name,Supervisor) परिभाषित करें। - हर चरण में
Pathमें सुपरवाइज़रSupervisorकी ID जोड़ें। - CTE में कर्मचारियों
Chris FeierabendऔरJasmin Mentilकी IDs चुनें।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
WITH employee_Hierarchy AS (
SELECT
ID,
NAME,
Supervisor,
-- Initialize the Path with CAST
___('___' AS VARCHAR(MAX)) as Path
FROM employee
WHERE Supervisor = 0
-- UNION the anchor query
___ ALL
-- Select the recursive query fields
SELECT
emp.___,
emp.___,
emp.___,
-- Add the supervisor in each step. CAST the supervisor.
Path + '->' + ___(emp.___ AS VARCHAR(MAX))
FROM employee emp
INNER JOIN employee_Hierarchy
ON emp.Supervisor = employee_Hierarchy.ID
)
SELECT Path
FROM employee_Hierarchy
-- Select the employees Chris Feierabend and Jasmin Mentil
WHERE ___ = 16 OR ID = ___;