Как скопировать данные иерархии в одной таблице и идентификаторы строк в другой таблице - PullRequest
0 голосов
/ 25 сентября 2019

Я работаю над способом получения идентификатора строки из таблицы с именем [Group].В дополнение к автоматически увеличивающемуся столбцу Id, есть также столбец ParentGroupId, который ссылается на идентификатор другой строки.

Я хочу взять идентификатор родительской группы и скопировать всю иерархию в нее.

У меня есть другая таблица AttributeValues, в которой есть столбец с названием EntityId, который ссылается на [Group] .Id.Мне нужно скопировать все эти значения и использовать вновь созданные идентификаторы из скопированной иерархии групп.

Количество уровней дочерних групп не является конечным.

Я создал CTE со всеми строкаминачиная с родительской строки.Я полагаю, что могу использовать этот CTE в качестве основы для обеих вставок.Я знаю, что мне нужно создать новые строки и сохранить новый идентификатор где-нибудь для использования в качестве идентификатора родительской группы следующих уровней и скопировать значения в таблицу значений атрибута, но я признаю, что я в растерянности.

        Select 
            Id
            ,IsSystem
            ,ParentGroupId
            ,GroupTypeId
            -- More columns are copied, but I removed for brevity

            From [Group] g 

            Where ParentGroupId = 6615

            UNION All

             Select 
            gs.Id
            ,gs.IsSystem
            ,gs.ParentGroupId
            ,gs.GroupTypeId
            -- More columns are copied, but I removed for brevity

            From [Group] gs 
                Inner Join cte_group_structure gs2
                On gs2.Id = gs.ParentGroupId
    )

    SELECT 
*
FROM 
    cte_group_structure;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...