编写查询以显示员工编号,费用代码,专业ID,专业名称,咨询日期,患者编号和到期日将使用咨询日期+ 21
SELECT
staffid,
chrgcode,
dateconsulted,
patientno,
(dateconsulted + 21) "Due Date"
FROM
staff_speciality,
staff,
speciality,
consultation;
SELECT Staffid,chrgcode,已咨询日期,patientno((已咨询日期+ 21)“到期>日期”
*
第1行出现错误:
ORA-00918:列定义不明确
连接到:
Oracle Database 12c标准版12.1.0.2.0-64位生产版本
SQL>描述特殊性
名称为空?键入
SPECID NOT NULL CHAR(4)
SPECNAME VARCHAR2(25)
声明VARCHAR2(100)
SQL>描述staffid
错误:
ORA-04043:对象Staffid不存在
SQL>描述人员
名称为空?键入
STAFFID NOT NULL CHAR(2)
FIRSTNAME VARCHAR2(20)
姓氏VARCHAR2(20)
角色VARCHAR2(15)
GENDER CHAR(1)
DATEJOINED DATE
DATELEFT DATE SQL>描述人员专长 错误:
ORA-04043:不存在对象人员专长
SQL>描述staff_speciality
名称为空?键入
STAFFID NOT NULL CHAR(2)
SPECID NOT NULL CHAR(4)
DATEQUALIFIED NOT NULL DATE
VALIDTILLDATE DATE
细节VARCHAR2(100)
SQL>描述咨询 名称为空?键入
CHRGCODE NOT NULL CHAR(7) STAFFID NOT NULL CHAR(2) DATECONSULTED NOT NULL DATE STARTTIME NUMBER(4,2)
PATIENTNO CHAR(7)
SQL> SELECT staffid,chrgcode,dateconsulted,Patientno,(dateconsulted + 21)“到期日期”
2 FROM人员_专业,人员,专业,咨询;
SELECT staffid,chrgcode,dateconsulted,patientno,(dateconsulted + 21)“到期日”
*
第1行出现错误:
ORA-00918:列定义不明确
答案 0 :(得分:0)
您可以使用ANSI-92语法构造这样的查询
SELECT s.staffid, chrgcode, dateconsulted, patientno, (dateconsulted + 21) "Due Date"
FROM staff_speciality ss
JOIN staff s ON s.staffid = ss.staffid
JOIN speciality sp ON sp.specid = ss.specid
JOIN consultation c ON c.staffid = s.staffid
在选择列表中为staffid
列加上别名(您也可以显式别名每个列)的情况下尤为重要,因为三个表具有该列作为公用列,如果未指定,Oracle将无法知道哪个表的列是选择时没有别名,并且由于该错误而引发ORA-00918: column ambiguously defined
。