在Oracle中创建视图时出错

时间:2012-08-05 08:45:16

标签: sql oracle

我正在尝试创建包含HospitalCodeWardNoBedNoDateLastServiced列的视图,并将这些列命名为Hospital,Ward,Bed和Last Serviced。

CREATE VIEW HospitalCode, WardNo, BedNo, DateLastServiced  
AS SELECT * FROM BED, WARD  

我收到此错误,说我错过了一个关键字。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

SQL中有三个错误:

  1. 您创建视图的语法错误
  2. 两个表之间没有连接条件
  3. 您没有指定哪个列属于哪个表。
  4. 要在视图中定义列的名称,您可以在CREATE VIEW语句中的视图名称之后列出它们(作为documented in the manual

    CREATE VIEW MyView1 
    (
       hospital,
       Ward, 
       Bed 
       Last_Serviced
    )
    AS 
    SELECT bed.HospitalCode, 
           ward.WardNo, 
           bed.BedNo, 
           ward.DateLastServiced  
    FROM BED
      JOIN WARD on bed.bedno = ward.bedno;
    

    由于您没有发布所涉及的两个表的定义,我不得不猜测哪个列来自哪个表。 您必须调整选择以调整该缺失信息。但它应该给你足够的信息

    更改视图列名称的另一个选项是使用列别名选择原始列:bed.HospitalCode as hospital

答案 1 :(得分:0)

你错过了观看名称试试这个:

CREATE VIEW MyView1 AS SELECT HospitalCode, WardNo, BedNo, DateLastServiced  
 FROM BED, WARD  

我也不确定SELECT,因为我没有表的结构。

<强>更新

  

ORA-00918:列模糊定义

此错误意味着两个表BED,WARD都具有相同的列名,因此oracle无法确定使用哪一个。

的后期输出
DESCRIBE TABLE BED;
DESCRIBE TABLE WARD;