Пользовательский доступ и иерархия доступа к ролям - PullRequest
0 голосов
/ 24 января 2020

Используя это, например: sample

Мне нужно выбрать доступ, где таблица user_access является приоритетом. Если в user_access есть moduleFeatureID, тогда выберите вместо него тот, что в role_access. Но если moduleFeatureID не существует в user_access, отобразите то, что находится в таблице role_access.

Я получил правильные данные, используя этот запрос:

SELECT u.userID
    ,username
    ,password
    ,roleID
    ,moduleFeatureID
    ,isDisabled
FROM [user] u
INNER JOIN user_access ua ON ua.userID = u.userID

UNION

SELECT u.userID
    ,username
    ,password
    ,u.roleID
    ,moduleFeatureID
    ,isDisabled
FROM [user] u
INNER JOIN role_access ra ON ra.roleID = u.roleID

WHERE STR(u.userID) + STR(moduleFeatureID) NOT IN 

(
    SELECT STR(u.userID) + STR(moduleFeatureID)
    FROM [user] u
    INNER JOIN user_access ua ON ua.userID = u.userID
)

output

Но могу ли я попросить лучшего запроса для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...