1,oracle,一句SQL
有2张表,一张权限信息表MODULE,员工权限表AUTHORITY。界面有2个ListBox A,B,要求B中列出某一个员工的权限,A中列出该员工没有的权限。如果将B中的权限取出,并拼一句SQL运行的结果给A,拼得SQL条件个数比较多,简单点可以这样写A对应的SQL:
select MODULE.rowid, MODULE.* from MODULE, AUTHORITY
where AUTHORITY.WORKERNO(+) = '员工号'
and MODULE.SUBSYSID = AUTHORITY.SUBSYSID(+)
and MODULE.MODULEID = AUTHORITY.MODULEID(+)
and AUTHORITY.WORKERNO is null
如果权限中所有父权限(上层权限)在A中总归显示(不考虑B中是否包含),可以再加一句
and AUTHORITY.MODULEID(+) != '父权限标识(具体的值,再MODULE中区分权限父子关系)'