Я новичок в сервере sql, у меня есть отделы, и пользователь назначен для нескольких отделов, мне нужно получить список пользовательских отделов в виде дерева без дублирующихся элементов по sp.
Я устал преобразовывать дерево в плоский список в c #, но я хочу получить эти данные из sql правильно без использования кода C #.
-- get the tree node
SELECT UD_nUserID, UD_nDepartmentID
FROM UserDepartments
WHERE UD_nUserID=@UD_nUserID
UNION
SELECT DP_nManagerID AS UD_nUserID,DP_nID AS UD_nDepartmentID
FROM dbo.Departments
WHERE DP_nManagerID=@UD_nUserID AND DP_bIsDeleted = 0
-- then get the items per node (in two differnt sps , which is not correct at all)
SELECT
[DP_nID]
, [DP_cName]
, [DP_nManagerID]
, [DP_nParentID]
, [DP_nBranchID]
FROM
[dbo].[Departments]
WHERE
[DP_nID] = @DP_nID
AND
[DP_bIsDeleted] = 0
Мне нужно удалить дубликат из этого дерева:
![show image here](https://i.stack.imgur.com/imXOq.png)
Не могли бы вы помочь мне написать полный sp, который возвращает все пользовательские отделы без дублирующихся элементов?