CREATE OR REPLACE VIEW QIUSER.CAS_USER_ROLE_VIEW
  as select 
    a.user_id as user_id , 
    b.role_id as role_id,
    c.resources_id as resources,
    c.permission_id as permission_id,
    d.role_name as role_name, 
    e.permission_name as permission_name,
    f.resources_name as resources_name,
    f.parent_id as parent_id,
    f.url as url,
    f.img_src as img_src,
    f.create_date as create_date
  from 
  (((((QIUSER.Cas_User_Role a inner join QIUSER.Cas_Role_Permission b) inner join QIUSER.Cas_Permission_Resources c) inner join QIUSER.Role d) inner join QIUSER.Permission e) inner join QIUSER.Resources f)
  where (a.role_id = b.role_id) and (b.permission_id = c.permission_id) and (c.resources_id = f.id) and (b.permission_id = e.id) and (a.role_id = d.id);这是我创建视图的代码,可是在红字的地方会报缺少关键字ORA-00905: missing keyword,搞了一上午了,一点结果都没有,我是新手,公司刚开始做Oracle,所以很多地方不是很懂。请各位大侠帮帮忙了。 谢谢 ~~

解决方案 »

  1.   

    如:
    select * from a
    inner join b
    on a.id=b.id
      

  2.   


    CREATE OR REPLACE VIEW QIUSER.CAS_USER_ROLE_VIEW
      AS
    SELECT A.USER_ID         AS USER_ID,
           B.ROLE_ID         AS ROLE_ID,
           C.RESOURCES_ID    AS RESOURCES,
           C.PERMISSION_ID   AS PERMISSION_ID,
           D.ROLE_NAME       AS ROLE_NAME,
           E.PERMISSION_NAME AS PERMISSION_NAME,
           F.RESOURCES_NAME  AS RESOURCES_NAME,
           F.PARENT_ID       AS PARENT_ID,
           F.URL             AS URL,
           F.IMG_SRC         AS IMG_SRC,
           F.CREATE_DATE     AS CREATE_DATE
      FROM QIUSER.CAS_USER_ROLE A
     INNER JOIN QIUSER.CAS_ROLE_PERMISSION
        ON A.ROLE_ID = B.ROLE_ID
     INNER JOIN QIUSER.CAS_PERMISSION_RESOURCES C
        ON B.PERMISSION_ID = C.PERMISSION_ID
     INNER JOIN QIUSER.ROLE D
        ON C.RESOURCES_ID = F.ID
     INNER JOIN QIUSER.PERMISSION E
        ON B.PERMISSION_ID = E.ID
     INNER JOIN QIUSER.RESOURCES F
        ON A.ROLE_ID = D.ID
    ;
      

  3.   


    如果按照你这样做的话, F.id就找不到了吧,F是在下面声明的啊 ~~
      

  4.   

    哦,没仔细看,你的语法有错误,inner join 后要写on 条件的不是写在 where 后面的。
      

  5.   


    --inner join这么写一样 
    CREATE OR REPLACE VIEW QIUSER.CAS_USER_ROLE_VIEW
      AS
    SELECT A.USER_ID         AS USER_ID,
           B.ROLE_ID         AS ROLE_ID,
           C.RESOURCES_ID    AS RESOURCES,
           C.PERMISSION_ID   AS PERMISSION_ID,
           D.ROLE_NAME       AS ROLE_NAME,
           E.PERMISSION_NAME AS PERMISSION_NAME,
           F.RESOURCES_NAME  AS RESOURCES_NAME,
           F.PARENT_ID       AS PARENT_ID,
           F.URL             AS URL,
           F.IMG_SRC         AS IMG_SRC,
           F.CREATE_DATE     AS CREATE_DATE
      FROM QIUSER.CAS_USER_ROLE            A,
           QIUSER.CAS_ROLE_PERMISSION      B,
           QIUSER.CAS_PERMISSION_RESOURCES C,
           QIUSER.ROLE                     D,
           QIUSER.PERMISSION               E,
           QIUSER.RESOURCES                F
     WHERE A.ROLE_ID = B.ROLE_ID
       AND B.PERMISSION_ID = C.PERMISSION_ID
       AND C.RESOURCES_ID = F.ID
       AND B.PERMISSION_ID = E.ID
       AND A.ROLE_ID = D.ID;