创建视图时报ORA-00905: missing keyword

JavaEthan 2011-08-25 02:55:20

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,所以很多地方不是很懂。请各位大侠帮帮忙了。 谢谢 ~~
...全文
558 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaEthan 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 benchim888 的回复:]
SQL code

--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,
……
[/Quote]

谢谢了,其实我最初版本就是你这种写法,结果找了下数据库 , 原来是数据库有个表没数据 。。。
BenChiM888 2011-08-25
  • 打赏
  • 举报
回复

--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;
JavaEthan 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 benchim888 的回复:]

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

引用 3 楼 javaethan 的回复:
引用 2 楼 benchim888 的回复:

SQL code

CREATE OR REPLACE VIEW QIUSER.CAS_USER_ROLE_VIEW
AS
SELECT A.USER_ID AS USER_ID,
……
[/Quote]

嗯,现在就是不知道怎么做了。 好迷茫 ~ F获取不到,要是放到上面D就获取不到 。。。
BenChiM888 2011-08-25
  • 打赏
  • 举报
回复
哦,没仔细看,你的语法有错误,inner join 后要写on 条件的不是写在 where 后面的。

[Quote=引用 3 楼 javaethan 的回复:]
引用 2 楼 benchim888 的回复:

SQL code

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_I……


如果按……
[/Quote]
JavaEthan 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 benchim888 的回复:]

SQL code

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_I……
[/Quote]

如果按照你这样做的话, F.id就找不到了吧,F是在下面声明的啊 ~~
BenChiM888 2011-08-25
  • 打赏
  • 举报
回复

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
;
areswang 2011-08-25
  • 打赏
  • 举报
回复
如:


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

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧