-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:缺少关键字。

4

3 回答 3

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

参考:创建视图

于 2013-05-09T09:29:54.550 回答
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'
于 2013-05-09T19:57:35.397 回答
0

AS在视图名称后添加:

create view UOS_VU_COURSE_MODULES AS
于 2013-05-09T09:30:37.693 回答