-5

我正在尝试创建一个包含列HospitalCodeWardNo、的视图BedNoDateLastServiced并将这些列命名为 Hospital、Ward、Bed 和 Last Serviced。

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

我收到此错误,说我缺少关键字。有人可以帮忙吗?

4

2 回答 2

3

您的 SQL 中有三个错误:

  1. 您创建视图的语法错误
  2. 您在两个表之间没有连接条件
  3. 您不指定哪个列属于哪个表。

要定义视图中列的名称,您可以在 CREATE VIEW 语句中的视图名称之后列出它们(如手册中所述

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

于 2012-08-05T09:02:39.870 回答
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;
于 2012-08-05T08:52:34.187 回答