0
ModuleUserPermission是我從哪裏獲取特定用戶的模塊ID以及在模塊表中查詢的主表我在這裏得到的菜單ID查詢菜單表的問題是模塊表只包括終點菜單的id,我想所有的家長以及從終點Id到所有父母的遞歸查詢應該被選中
select *
from [ModuleUserPermission] mup
inner join Module ml on ml.Id = mup.Module_Id
--inner join Menu m on m.Id = ml.Menu_Id and m.IsActive = 1
where (NULLIF(@AspNetUsers_Id,'') IS NULL OR mup.AspNetUsers_Id = @AspNetUsers_Id)
SOLUTION: 這是我做的,我們能做到這一點的正確方法?
DECLARE @TblTemp TABLE(
Id int,
ParentId int,
Name nvarchar(max),
Url nvarchar(max) NULL,
SortOrder int,
IconClass nvarchar(max) NULL,
IsActive bit
);
;With temp as (
select distinct m.*
from [ModuleUserPermission] mup
inner join Module ml on ml.Id = mup.Module_Id
inner join Menu m on m.Id = ml.Menu_Id and m.IsActive = 1
where (NULLIF(@AspNetUsers_Id,'') IS NULL OR mup.AspNetUsers_Id = @AspNetUsers_Id)
union all
select m.*
from Menu m
inner join temp r on r.ParentId = m.Id
where m.IsActive = 1
)
INSERT INTO @TblTemp select * from temp
;With relation (Id, IconClass,SortOrder, ParentId, Name,Url,IsActive, [Level], [OrderSequence])
as
(
select distinct m.Id, m.IconClass,m.SortOrder, m.ParentId, m.Name,ISNULL(m.Url,'') Url,m.IsActive, 1, cast(m.Id as varchar(20))
from @TblTemp m where m.ParentId = 0
union all
select p.Id, p.IconClass,p.SortOrder, p.ParentId,p.Name,p.Url,p.IsActive, r.[Level]+1, cast(r.orderSequence + '_' + cast(p.Id as varchar) as varchar(20))
from @TblTemp p
inner join relation r on p.ParentId = r.Id
)
select * from relation order by OrderSequence
你能否請提供表結構和樣本數據以及您想要的輸出? –
@StefanoZanini我已更新帖子,請參閱 – Mike
請將您的結構和樣本數據以適當格式的文本發佈,因爲如果您發佈圖片,則此問題將無法正確編入索引。這一點以及圖像鏈接可能會中斷的事實使得這個問題更加嚴重,對未來可能面臨同樣問題的用戶來說,這個問題的答案會變得不那麼有用。 –