1.select * where
(exists (select * from user_role_privs where granted_role='RBAAN_VIEW_ALL')
or
trim(CENTRE) in 
  (select field_value from auth_role_field, user_role_privs
  where rbaan_role=granted_role
  and upper(field_name)='SERVICE_CENTRE')
)2.select grantee, field_value service_center from chenxy.baan_roles inner join  auth_role_field
on rbaan_role=granted_role
请高手解释一下!谢谢!

解决方案 »

  1.   

    1. sql错误,没有from2. 和sql
    select grantee, field_value service_center from chenxy.baan_roles auth_role_field 
    where rbaan_role=granted_role 
    等效
      

  2.   

    不好意思!
    select * from baan.V_SMS_REPLY where 
    (exists (select * from user_role_privs where granted_role='RBAAN_VIEW_ALL') 
    or 
    trim(CENTRE) in 
      (select field_value from auth_role_field, user_role_privs 
      where rbaan_role=granted_role 
      and upper(field_name)='SERVICE_CENTRE') 

    我的意思是能不能解释一下SQL是什么意思.
    user_role_privs表是不是查看当前用户的系统权限和表级权限的系统表?
    小弟刚学,麻烦大哥详细说一下。谢谢了
      

  3.   

    1.select * from baan.V_SMS_REPLY where 
    (exists (select * from user_role_privs where granted_role='RBAAN_VIEW_ALL')
    or --在user_role_privs中存在一条记录,当granted_role='RBAAN_VIEW_ALL'的时候。
    trim(CENTRE) in 
      (select field_value from auth_role_field, user_role_privs 
      where rbaan_role=granted_role 
      and upper(field_name)='SERVICE_CENTRE') 
    ) --或者CENTRE(trim(centre)是centre字段的值左右两端截去空格后的值)存在于下面的查询结果中:
    --这个子句是个两表的内连接,连接条件是rbaan_role=granted_role及field_name的大写值为'SERVICE_CENTRE'。查询出的field_value 用来和上面的trim(CENTRE)判断
      

  4.   

    select grantee, field_value service_center from chenxy.baan_roles inner join  auth_role_field 
    on rbaan_role=granted_role 上面说过了,是两表连接。join是sql通用写法,1中的是oracle写法。on后的是连接条件。
      

  5.   

    谢谢!再问一个问题就结贴!
    看到一个sql是这样的
    SELECT * FROM BAAN."V_UTCACC_WIP_SR/SC/SM_TOTAL" A
    请问一下"V_UTCACC_WIP_SR/SC/SM_TOTAL"这个表名字就是这样的呢?
    字符串里的"/"没什么意义吧?