繁体   English   中英

需要帮助编写查询Oracle SQL

[英]Need help writing a query Oracle SQL

写一个查询,以显示工作人员,收费代码,专业ID,专业名称,咨询日期,患者编号和截止日期将使用咨询日期计算+ 21

SELECT
    staffid, 
    chrgcode,
    dateconsulted,
    patientno,
    (dateconsulted + 21) "Due Date"
FROM
    staff_speciality,
    staff,
    speciality,
    consultation;

SELECT staffid,chrgcode,dateconsulted,patientno,(dateconsulted + 21)“Due> Date”
*
第1行的错误:
ORA-00918:列模糊定义
连接到:
Oracle Database 12c标准版12.1.0.2.0版 - 64位生产
SQL>描述专业
名字空? 类型


SPECID NOT NULL CHAR(4)
SPECNAME VARCHAR2(25)
SPECNOTES VARCHAR2(100)
SQL>描述staffid
错误:
ORA-04043:对象staffid不存在
SQL>描述员工
名字空? 类型


STAFFID NOT NULL CHAR(2)
FIRSTNAME VARCHAR2(20)
LASTNAME VARCHAR2(20)
角色VARCHAR2(15)
GENDER CHAR(1)
DATEJOINED DATE
DATELEFT DATE SQL>描述staffspeciality错误:
ORA-04043:对象staffspeciality不存在
SQL>描述staff_speciality
名字空? 类型


STAFFID NOT NULL CHAR(2)
SPECID NOT NULL CHAR(4)
DATEQUALIFIED NOT NULL DATE
VALIDTILLDATE DATE
DETAILS 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 staff_speciality,staff,special,consultation;
SELECT staffid,chrgcode,dateconsulted,patientno,(dateconsulted + 21)“截止日期”
*
第1行的错误:
ORA-00918:列模糊定义

您可以使用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由于此错误引发了ORA-00918: column ambiguously defined

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM