ПочатиПочніть безкоштовно

Отримати всіх можливих батьків в одному полі?

Ваше фінальне завдання в цьому розділі — знайти всіх можливих батьків, починаючи з одного 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 ___;
Редагувати та запускати код