Benim amirim kim?
Bu egzersizde, hiyerarşinin en tepesindeki patrondan, en alttaki çalışanlara kadar olan yolu (path) elde etmek istiyoruz. Bu görev için, her adımda elde edilen bilgileri tek bir alanda birleştirmemiz gerekiyor. Bunu, sayısal ID’leri CAST() kullanarak metne çevirip birleştirerek yapabilirsin. Örneğin, sayısal türdeki ID’yi karakter türüne çevirmek için CAST(ID AS VARCHAR(MAX)) kullanılabilir.
Görev, ID=18 olan Chris Feierabend ve ID=16 olan Jasmin Mentil için organizasyonun en tepesine kadar yolu bulmaktır. Çıktı şöyle görünmelidir: boss_first_level -> boss_second_level .... Çalışanların isimleri değil, ID’leri seçilmelidir.
Bu egzersiz
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular
kursunun bir parçasıdırEgzersiz talimatları
Pathalanını amirin (0)ID’siyle ve özyinelemenin başlangıç koşuluyla başlat.- Çapa (anchor) üyesini
UNIONile birleştir ve özyinelemeli üyenin alanlarını (ID,Name,Supervisor) tanımla. - Her adımda
Supervisoryani amirinID’siniPath’e ekle. - CTE içinde
Chris FeierabendveJasmin MentilçalışanlarınınID’lerini seç.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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 = ___;