3

Я имею в виду Bill Karwin's presentation, чтобы реализовать таблицу закрытия, которая поможет мне управлять иерархиями. К сожалению, в презентации не показано, как я мог вставить/обновить столбец Level, упомянутый на слайде 67; это было бы очень полезно. Я размышлял, но я не мог придумать что-то конкретное, что я мог бы проверить. Вот что я получил до сих пор:Закрытие таблицы Инструкция INSERT, включая столбец уровня/расстояния

create procedure USP_OrganizationUnitHierarchy_AddChild 
    @ParentId UNIQUEIDENTIFIER, 
    @NewChildId UNIQUEIDENTIFIER 
AS 
BEGIN 
    INSERT INTO [OrganizationUnitHierarchy] 
    (
     [AncestorId], 
     [DescendantId], 
     [Level] 
    ) 
    SELECT [AncestorId], @NewChildId, (here I need to get the count of ancestors that lead to the currently being selected ancestor through-out the tree) 
    FROM [OrganizationUnitHierarchy] 
    WHERE [DescendantId] = @ParentId 
    UNION ALL SELECT @NewChildId, @NewChildId 
END 
go 

Я не уверен, как я мог это сделать. Есть идеи?

ответ

4

Вы знаете, что Родитель = сам у вас есть уровень = 0 и при копировании пути от предка, вы просто повышение уровня на 1:

create procedure USP_OrganizationUnitHierarchy_AddChild 
    @ParentId UNIQUEIDENTIFIER, 
    @NewChildId UNIQUEIDENTIFIER 
AS 
BEGIN 
    INSERT INTO [OrganizationUnitHierarchy] 
    (
     [AncestorId], 
     [DescendantId], 
     [Level] 
    ) 
    SELECT [AncestorId], @NewChildId, [Level] + 1 
    FROM [OrganizationUnitHierarchy] 
    WHERE [DescendantId] = @ParentId 
    UNION ALL 
    SELECT @NewChildId, @NewChildId, 0 
END 
+0

Серьезно ?! Это так просто? Я чувствую себя настолько глупо сейчас ... Спасибо за помощь, очень благодарен :) – Kassem

+0

Я использую эту модель для работы на деревьях, поэтому она мне знакома, иногда простые вещи трудно понять. –

 Смежные вопросы

  • Нет связанных вопросов^_^