2013-05-09 69 views
-4

SQL这样的:甲骨文缺少关键字

CREATE VIEW UOS_VU_COURSE_MODULES 
SELECT MODULE.MODULE_TITLE, STAFF.FIRST_NAME, STAFF.LAST_NAME, MODULE.SEMESTER, MODULE.CREDIT 
FROM STAFF, MODULE 
WHERE MODULE.COODINATOR_ID =STAFF.STAFF_ID AND COURSE.COURSE_ID=INFU101 AND 
COURSE.COURSE_ID=MGTU17 
ORDER BY MODULE.MODULE_TITLE 

看来ORA-00905:缺少关键字。

回答

2

缺少AS关键字:

CREATE VIEW UOS_VU_COURSE_MODULES 
AS 
SELECT 
    MODULE.MODULE_TITLE, STAFF.FIRST_NAME, STAFF.LAST_NAME, 
    MODULE.SEMESTER, MODULE.CREDIT 
FROM 
    STAFF, MODULE 
WHERE 
    MODULE.COODINATOR_ID = STAFF.STAFF_ID AND COURSE.COURSE_ID = INFU101 AND 
    COURSE.COURSE_ID = MGTU17 
ORDER BY MODULE.MODULE_TITLE 

参考:CREATE VIEW

0

视图名称后添加AS

create view UOS_VU_COURSE_MODULES AS 
1

有你的代码存在的几个问题。

  1. 当然,AS是必需的。

  2. 这种大写的代码风格确实难以阅读,这就是为什么高速公路路标不再使用它。

  3. 连接样式已过时,您应该使用ANSI SQL方法。

  4. 在course.course_id上​​有两个谓词,看起来应该是文字,但不幸的是,如果它们是互斥的话。

无论如何,你应该有一些看起来更可支持:

create view 
    uos_vu_course_modules 
as 
select 
    module.module_title, 
    staff.first_name , 
    staff.last_name , 
    module.semester , 
    module.credit 
from 
    staff join 
    module on (module.coodinator_id = staff.staff_id) 
where 
    course.course_id = 'INFU101' and 
    course.course_id = 'MGTU17' 
order by 
    module.module_title; 

也许WHERE子句应

course.course_id = 'INFU101' or 
    course.course_id = 'MGTU17'