2013-10-21 1289 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'