2013-10-21 52 views
-4

QNS:项目说明和名为杰西施坦格任何病人所有的治疗治疗日期(即给定名称是杰西& FamilyName是施坦格)SQL错误:ORA-00936:缺少表达式,缺少的表达式在哪里?

我写道:

SELECT DISTINCT 
    Description, 
    Date as treatmentDate 
WHERE doothey.Patient P, 
     doothey.Account A, 
     doothey.AccountLine AL, 
     doothey.Item.I AND 
     P.PatientID = A.PatientID AND 
     A.AccountNo = AL.AccountNo AND 
     AL.ItemNo = I.ItemNo AND 
    (p.FamilyName = 'Stange' AND p.GivenName = 'Jessie'); 

错误:

Error at Command Line:1 Column:30 Error report: SQL Error: ORA-00936: missing expression 00936. 00000 - "missing expression" *Cause: *Action:

缺失的表达是什么?下面

+0

没有'FROM'条款。 –

+0

哪里是从选择查询中的cluase –

+0

您缺少'FROM'子句 – Ilya

回答

4

正确的语法。

SELECT DISTINCT Description, Date as treatmentDate 
FROM 
doothey.Patient P, doothey.Account A, doothey.AccountLine AL, doothey.Item I 
WHERE P.PatientID = A.PatientID AND A.AccountNo = AL.AccountNo 
AND AL.ItemNo = I.ItemNo  
AND (p.FamilyName = 'Stange' AND p.GivenName = 'Jessie'); 

虽然上面的查询将工作,但推荐的方法是使用ANSI SQL JOIN语法是

SELECT DISTINCT Description, Date as treatmentDate 
FROM doothey.Patient P 
INNER JOIN doothey.Account A 
    ON P.PatientID = A.PatientID 
INNER JOIN doothey.AccountLine AL 
    ON A.AccountNo = AL.AccountNo 
INNER JOIN doothey.Item I 
    ON AL.ItemNo = I.ItemNo 
WHERE 
p.FamilyName = 'Stange' AND p.GivenName = 'Jessie'; 
+0

错误在命令行:1列:21 错误报告: SQL错误:ORA-00936:缺少表达 00936. 00000 - “失踪表达” *原因: *操作:(这是奇怪) – user2901548

0

由于人评论你错过了FROM语句进行选择。

我也建议刚刚宣布所有的表在FROM并指定WHERE子句中的链接,而是join表一起使用LEFT JOIN和/或INNER JOIN S等

下面是我想这个查询应该涵盖我上面试图解释的内容。

SELECT DISTINCT 
    Description, 
    Date as treatmentDate 
FROM 
    doothey.Patient P 
INNER JOIN 
    doothey.Account A 
ON 
    P.PatientID = A.PatientID  
INNER JOIN 
    doothey.AccountLine AL 
ON 
    A.AccountNo = AL.AccountNo 
INNER JOIN 
    doothey.Item.I 
ON 
    AL.ItemNo = I.ItemNo 
WHERE 
    p.FamilyName = 'Stange' 
AND 
    p.GivenName = 'Jessie'