Sql 选择在其他表中没有关系的记录
我有以下表格: 其中,每个表的主键是其名称+id,例如:UserRole.UserRoleId是UserRole的主键,UserRole.RoleId和UserRole中Role的外键 因此,我想选择不带Profil functionality.profilefunctionality.Count=0的所有函数性,这是我对以下查询所做的: 选择*FROM functionality,其中functionalityid不在SELECT functionalityid FROM profilefunctionality中 但我不知道如何进行以下选择: 无角色的所有功能性: 无用户的所有功能性:Sql 选择在其他表中没有关系的记录,sql,oracle,Sql,Oracle,我有以下表格: 其中,每个表的主键是其名称+id,例如:UserRole.UserRoleId是UserRole的主键,UserRole.RoleId和UserRole中Role的外键 因此,我想选择不带Profil functionality.profilefunctionality.Count=0的所有函数性,这是我对以下查询所做的: 选择*FROM functionality,其中functionalityid不在SELECT functionalityid FROM profilefun
只需展开子选项: 因此,对于没有角色的所有功能: 对于无用户的所有功能:
我使用减号减去没有角色出现的功能,因为它们显然也不会有用户谢谢,它起作用了,只是在第一个查询中你忘了添加这个:在从PROFILFONCTIONNALITE选择不同的FONCTIONNALITEID中添加FONCTIONNALITEID;,我已经更新了你的答案
Funcionality.ProfileFuncionality.Count > 0
AND Funcionality.ProfileFuncionality.Profile.RoleProfile.Count = 0
Funcionality.ProfileFuncionality.Count > 0
AND Funcionality.ProfileFuncionality.Profile. RoleProfile.Count > 0
AND Funcionality.ProfileFuncionality.Profile.RoleProfile.Role.UserRole.Count = 0
SELECT *
FROM Funcionality
WHERE FuncionalityId NOT IN
(SELECT FuncionalityId
FROM ProfileFuncionality
JOIN Profile
ON Profile.Profileid = ProfileFuncionality.Profileid
JOIN RoleProfile
ON Profile.Profileid = RoleProfile.Profileid);
SELECT *
FROM Funcionality
WHERE FuncionalityId NOT IN
(SELECT FuncionalityId
FROM ProfileFuncionality
JOIN Profile
ON Profile.Profileid = ProfileFuncionality.Profileid
JOIN RoleProfile
ON Profile.Profileid = RoleProfile.Profileid
JOIN Role
ON Role.Roleid = RoleProfile.Roleid
JOIN UserRole
ON Role.Roleid = UserRole.Roleid)
MINUS
SELECT *
FROM Funcionality WHERE FuncionalityId NOT IN
(SELECT FuncionalityId
FROM ProfileFuncionality
JOIN Profile
ON Profile.Profileid = ProfileFuncionality.Profileid
JOIN RoleProfile
ON Profile.Profileid = RoleProfile.Profileid);