-5

Qns: Jessie Stange という名前の患者 (GivenName は Jessie、FamilyName は Stange) のアイテムの説明とすべての治療の治療日

私が書いたもの:

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');

エラー:

コマンド ラインのエラー:1 列:30 エラー レポート: SQL エラー: ORA-00936: 式 00936 がありません。00000 - "式がありません" *原因: *アクション:

足りない表現は?

4

2 に答える 2

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';
于 2013-10-21T09:18:36.680 に答える
0

人々がコメントしているようFROMに、あなたは選択したステートメントを見逃しました。

また、すべてのテーブルを で宣言して節でリンクを指定するだけでなく、 and/or s などを使用してテーブルをまとめることもお勧めします。FROMWHEREjoinLEFT JOININNER 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'
于 2013-10-21T09:26:21.537 に答える