Siapa atasan saya?
Dalam latihan ini, kita ingin mendapatkan jalur dari atasan di puncak hierarki hingga karyawan di bagian bawah hierarki. Untuk tugas ini, kita harus menggabungkan informasi yang diperoleh pada setiap langkah ke dalam satu field. Anda dapat melakukannya dengan menggabungkan ID menggunakan CAST() dari tipe number ke string. Contohnya adalah CAST(ID AS VARCHAR(MAX)) untuk mengonversi ID bertipe number menjadi tipe char.
Tugasnya sekarang adalah menemukan jalur untuk karyawan Chris Feierabend dengan ID=18 dan Jasmin Mentil dengan ID=16 sampai ke puncak organisasi. Keluaran harus terlihat seperti ini: boss_first_level -> boss_second_level .... ID karyawan, bukan nama mereka, yang harus dipilih.
Latihan ini adalah bagian dari kursus
Kueri Hierarkis dan Rekursif di SQL Server
Petunjuk latihan
- Inisialisasi
PathkeIDatasan (0) dan kondisi awal rekursi. UNIONanchor member dan definisikan field recursive member (ID,Name,Supervisor).- Tambahkan
IDatasanSupervisorkePathpada setiap langkah. - Pilih
IDkaryawanChris FeierabenddanJasmin Mentildi CTE.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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 = ___;