Отримати всіх можливих батьків в одному полі?
Ваше фінальне завдання в цьому розділі — знайти всіх можливих батьків, починаючи з одного ID, і об'єднати ID усіх знайдених поколінь в одному полі.
Для цього потрібно рекурсивно знайти всіх можливих членів і додати цю інформацію до одного поля. Скористайтеся оператором CAST() для об'єднання ID у рядок.
Ви шукатимете всіх членів родини, починаючи з ID = 290. Усього в таблиці family є 300 записів.
Ця вправа є частиною курсу
Ієрархічні та рекурсивні запити в SQL Server
Інструкції до вправи
- Встановіть
ParentIDзі значенням 290 як початкову точку. - Якщо в операції
CASEвиконуєтьсяParent.ID = '', полеParentмає бути встановлене в поточнийParentID. - Якщо в операції
CASEвиконуєтьсяParent.ID <> '', потрібно додати поточний ParentID до поточного значення Parent на кожній ітерації. - Виберіть
NameіParentіз визначеного CTE.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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 ___;