我试图创建包含列HospitalCode
,WardNo
,BedNo
,DateLastServiced
的视图,并将这些列命名为Hospital,Ward,Bed and Last Serviced。在Oracle中创建视图时出错
CREATE VIEW HospitalCode, WardNo, BedNo, DateLastServiced
AS SELECT * FROM BED, WARD
我得到这个错误,说我错过了一个关键字。任何人都可以帮忙吗?
我试图创建包含列HospitalCode
,WardNo
,BedNo
,DateLastServiced
的视图,并将这些列命名为Hospital,Ward,Bed and Last Serviced。在Oracle中创建视图时出错
CREATE VIEW HospitalCode, WardNo, BedNo, DateLastServiced
AS SELECT * FROM BED, WARD
我得到这个错误,说我错过了一个关键字。任何人都可以帮忙吗?
你错过了名视图试试这个:
CREATE VIEW MyView1 AS SELECT HospitalCode, WardNo, BedNo, DateLastServiced
FROM BED, WARD
而且我不知道SELECT,因为我没有你的表结构。
UPDATE
ORA-00918: column ambiguously defined
此错误意味着,这两个表的床,具有WARD相同的列名,所以Oracle不能确定要使用哪一个两个表。
的
DESCRIBE TABLE BED;
DESCRIBE TABLE WARD;
后输出你在你的SQL三个错误:
要定义在视图中列的名称,你可以在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
我已经改成了这个基于从该表中,但现在我得到的错误ORA-00907的列上:缺少右括号 – jeremy 2012-08-05 09:12:12
CREATE VIEW MyView1 ( 医院, 病房, 床 Last_Serviced ) AS SELECT病房.HospitalCode, bed.WardNo, bed.BedNo, bed.DateLastServiced FROM BED JOIN WARD on bed.bedno = ward.bedno; – jeremy 2012-08-05 09:12:59
@jeremy:你在'Bed'和'Last_Serviced'之间缺少一个逗号。 – eggyal 2012-08-05 09:13:24
哪里视图名称? – Mat 2012-08-05 08:51:43
BED和WARD之间没有联接? – 2012-08-05 08:55:03
在发布所有语法错误之前,您是否至少尝试阅读手册? – 2012-08-05 09:04:53