Bu başlık çok iyi değil, dolayısıyla aşağıdakileri göz önünde bulundurun. Beş tablolar vardır:TSQL - Birden çok birleşim yolu olan tablodan seçim yapın
Ve ona doğrudan veya dolaylı profil aracılığı ile bağlandığı bir kullanıcı için tüm izinlere almak istiyorum. değil oldukça orada şimdiye kadar ile geldim SQL şudur:
SELECT [Pe].[Controller],
[Pe].[Action]
FROM [PermissionSets] AS [PS]
JOIN [UserPermissionSets] AS [UPS]
ON ([UPS].[PermissionSetId] = [PS].[Id])
JOIN [Users] AS [U]
ON ([U].[Id] = [UPS].[UserId])
JOIN [Profiles] AS [P]
ON ([P].[Id] = [U].[ProfileId])
JOIN [ProfilePermissionSets] AS [PPS]
ON ([PPS].[ProfileId] = [P].[Id])
JOIN [Permissions] AS [Pe]
ON ([Pe].[PermissionSetId] = [PS].[Id])
WHERE [U].[Id] = 4;
Bu satırların doğru sayımını geri döner, ama yanlış yüzden, tekrar tekrar kontrolörü veya eylemi tekrarlıyor. Birisi, kullanıcı için tüm farklı izin kümelerini göstermek için düzeltmeme yardımcı olabileceğini umuyorum. İdeal olarak, aynı zamanda kullanıcı tarafından baştan keşfedilen her şeyi değiştirmeyi de isterim çünkü bunu yapmak için ihtiyacım olan yöntemde erişebileceğim şey budur (nesne User
adlı bir Varlık Çerçeve sınıfıdır ve kullanılarak göz atılacaktır) LINQ).
GÜNCELLEME Ben gerçekten izinler değil izin kümeleri istediğini olduğunu unuttuğu için.
Sadece GROUP BY' arıyorsunuz? – ZLK
Emin değilim, kendim için sorun yaratacak kadar SQL biliyorum, lol. – Gup3rSuR4c
Bir kullanıcı _UserPermissionSets_ Tablosunda her zaman en az bir giriş var mı? Değilse, sadece _UserPermissionSets_ veya _UserPermissionSets_ ve _Permissions_ içinde bir girişi olan kullanıcıları alırsınız. O zaman 'SOL DIŞ JOIN' kullanmalısınız. – schlonzo