Помогите с запросом для MS SQL
От: Аноним  
Дата: 25.11.13 11:41
Оценка:
Есть 4 таблицы:
Report (ID, Name,...) — таблица описания отчетов
Role (ID, Name) — классическая таблица ролей
User_Role (Login, ID_Role) — классическая таблица ролей пользователя

Report_Role (ID_Report, ID_Role) — пользователям каких ролей доступен отчет,
если для отчета нет роли, то можно всем

Нужно проверить доступность отчетов текущему пользователю. Сделал так:
SELECT DISTINCT  r.* FROM Report r
    LEFT JOIN Report_Role rr ON rr.ID_Report = r.ID 
WHERE rr.ID_Role IS NULL  OR
    EXISTS (select 1 from User_Role ur where ur.Login = 'admin' AND rr.ID_Role=ur.ID_Role)

Мне это не очень нравится, особенно подзапрос в фильтре.
Может присоветуете что получше?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.