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中區分權限父子關系)'