我在数据库中有2个表:1。代理表& 2. UserPermissions表
表1代理商包含以下给出的代理商列表;这里有公司ID& AgentID是唯一值。
AgentID AgentCode CompanyID RailEnabled 1 A1 1 1 2 A2 2 0 3 A3 3 1 4 A4 4 0
表2 UserPermissions表包含来自特定代理的所有用户的列表。还有2个字段ModuleCode,其值类似于' RAL'对于简短的Rail和Enabled字段。
UserID UserName ModuleCode Enabled CompanyID 1 U1 RAL 1 1 2 U2 RAL 0 1 3 U3 RAL 1 1 13 U4 BUS 1 1 4 U1 RAL 0 2 5 U2 RAL 0 2 6 U3 RAL 0 2 14 U4 HTL 1 2 7 U1 RAL 0 3 8 U2 RAL 0 3 9 U3 RAL 0 3 15 U4 FLT 1 3 10 U1 RAL 0 4 11 U2 RAL 0 4 12 U3 RAL 0 4 16 U4 BUS 1 4
现在我只需要过滤掉RailEnabled为true的代理,但没有为该代理的任何用户启用Rail服务(模块代码:RAL)。
提前感谢您的帮助。
答案 0 :(得分:0)
使用NOT EXISTS。
select * from agents a
where railenabled = 1 --assuming 1 means enabled
and not exists (select 1 --not exists to remove all agents whose users have RAL enabled
from userpermissions b
where a.companyid = b.companyid
and b.modulecode = 'RAL'
and b.enabled = 1
);