Вернуть индекс/данные списка (declare @list) при выборке (select) из списка
- Microsoft Sql Management studio
необходимо просмотреть права пользователя по страницам (есть ли у Коли право видеть одну из страниц или все сразу (page1, page2, page3, page4, page5)) показать список разрешимых страниц
я решила создать список id возможных страниц, которые я знаю и вписываю вручную и потом из таблицы 'пользовательские права' поискать id пользователя и id страницы, если есть данные показать (к примеру в таблице записывают Yes и No, и я ищу все строки с Yes относящиеся к Коле и странице x из списка)
procedure sql
ALTER PROCEDURE GetUserPageAcces
-
@UserId int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @ListPage table (IdPage int, PageName vacrchar(max))
INSERT INTO @ListPage VALUES (1, 'page1'), (2, 'page2'), (3, 'page3'), (4, 'page4'), (5, 'page5')
-- Insert statements for procedure here
SELECT SomePropertyAcces AS Access FROM MyTableWithUser
WHERE UserId = @UserId AND PageId IN (select Id from @ListPage) AND SomePropertyAcces = 'YES'
--return @ListPage
на выходе
Access
YES
YES
а как можно вернуть данные этого листа ListPage
чтоб на выходе было =>
Access PageName
YES page2
YES page3
я попыталась join-ом, потом попыталась создать таблицу #into, но уменя не получается, и возможно вообще это не так делают ?
я могу показать Id (взятое из таблицы MyTableWithUser), но мне нужно именно название страницы => page1, а не 1
Ответы (1 шт):
Используем JOIN:
SELECT SomePropertyAcces AS Access, PageName
FROM MyTableWithUser
JOIN @ListPage ON PageId = IdPage
WHERE UserId = @UserId AND SomePropertyAcces = 'YES'