2016-05-12 12 views
0

問題は次のように聞こえます:14:00:00の予約時間の患者を選択してください。時間のリストの特定の時間を選択する方法は?

患者テーブル

PatientID 
Patient1 
Patient2 
Patient3 

予約表

PatientID TimeCode 
Patient1 123 
Patient2 124 
Patient3 125 

Workhour表

Hours  TimeCode 
14:00:00 123 
14:45:00 124 
14:00:00 125 

Iすでにヘクタール問題は、私は唯一の14:00:00回を必要とするとき、それはまた14:45:00を持つ人々が表示され

クエリ

select Bookings.PatientID 
from Patient, Bookings, Workhour 
where Workhour.Hours='14:00:00' 
and PatientID=Bookings.PatientID 
and Bookings.TimeCode=Workhour.TimeCode; 

:動作するコードVEの。どうすればいいのですか?

私はあなたがANSIコードを容易にするために参加し使用することをお勧め
+3

あなたの質問は(あまり書かれていませんが)うまくいくはずです(*決して 'FROM'節でカンマを使用しないでください)。たぶんサンプルの結果やSQL Fiddleが何がうまくいかないかを説明します。 –

+0

構文のエラーのため、このクエリは何も返しません。 WHEREの列 'PatientID'はあいまいです。しかし、 'PatientID = Bookings.PatientID'から' Patient.PatientID = Bookings.PatientID'への変更条件がうまくいくように思えます。 – Andrew

答えて

1

:クエリの

SELECT b.PatientID 
FROM Patient p 
JOIN Bookings b 
    ON p.PatientID = b.PatientID 
JOIN Workhour h 
    ON b.TimeCode = h.TimeCode 
WHERE h.Hours='14:00:00' 

あなたは私が予想よりも多くの行を取得なぜあなたは患者

SELECT b.PatientID 
FROM Bookings b 
JOIN Workhour h 
    ON b.TimeCode = h.TimeCode 
WHERE h.Hours='14:00:00' 

に参加する必要はありません。わからない。 CREATE TABLEステートメントといくつかのサンプルデータをINSERTステートメントとして質問に追加してください。