Ниже моя база данных таблицы структураSQL INNER JOIN каждого конкретного случая
ApplicationModule
- Id, ключ, имя
ApplicationFeature
- Id, ModuleId, ключ, имя
Каждая функция отображается с модулем. Также мне нужно назначить только некоторые функции Арендатору.
TenantXFeature
- TenantId, FeatureId
Кроме того, когда я создаю роль, я карту несколько особенностей, выбрал из специфичным для арендатора (TenantXFeature)
RoleXFeature
- Идентификатор роли, FeatureId
Теперь мне нужен запрос к загрузите все специфические функции арендатора вместе с выбором (Y/N), если RoleXFeature имеет запись для этой функции.
SELECT AM.[Key] AS ModuleKey
,AM.Name AS ModuleName
,AF.[Key] AS FeatureKey
,AF.Name FeatureName
,RF.FeatureId
,CASE WHEN RF.FeatureId IS NULL THEN 0 ELSE 1 END AS Selected
FROM TenantXFeature TF
INNER JOIN ApplicationFeature AF
ON TF.FeatureId = AF.Id
INNER JOIN ApplicationModule AM
ON AF.ModuleId = AM.Id
LEFT JOIN RoleXFeature RF
ON RF.FeatureId = AF.Id AND RF.RoleIid = 1
WHERE TF.TenantId = 1
Здесь RF.FeatureId
всегда показывает NULL, даже если у меня есть отображение в RoleXFeature.
Пожалуйста, предложите/помогите решить эту проблему.
ли вам есть таблица для сопоставления арендаторов с ролями? –
@MarkBannister, у меня нет отдельной таблицы сопоставления, но в таблице ApplicationRole у нас есть столбец «TenantId» указывает, что роль специфична для Tenant. Значение «NULL» в этом столбце указывает, что оно является общим для всех арендаторов. – Billa