正确地措辞有点困难..
- 表 A 有作用
- 表 B 将角色与资产联系起来
- 表 C 用于资产
从角色到资产存在多对多关系。
基于资产中的列位值。我想将其映射到具有该值的角色。但由于多对多的关系,我得到了许多角色。所以我想要的是,如果任何资产的 bit = 1 返回等效角色。我不希望角色重复 PK。我返回重复角色(通过 PK)的查询如下所示。
select rls.Role_ID,
asset.Asset_ID,
Asset.Is_Public
from Roles rls
inner join Role_Asset on rls.Role_ID = Role_Asset.Role_ID
inner join Asset on Role_Asset.Asset_ID = asset.Asset_ID
where Asset.Is_Public =1
问题是由于多对多关系,我变成了许多角色ID。如果任何公共资产与角色相关联。我想要那个角色,但只有那个角色。如果一个角色与许多资产相关联,一个为 1,另一个为 0。我仍然希望它返回(因此,如果它与一个角色绑定的任何公共资产返回它)。
反之(又名 IS_PUBLIC=0)