0

このスキーマを持つ:

Doctor(license_no, doctor_name, specialty)

Patient(pat_id, pat_name, pat_address, pat_phone, date_of_birth)

Visit(license_no, pat_id, date_of_visit, type, diagnosis, charge) 

翻訳Patient (join sign) pat_id(date>=1-1-2005^ date<1-1-2006(Visit)) する必要があり、2005 年 1 月 1 日から 2006 年 1 月 1 日の間に医者を訪れた患者を選択することを意味すると考えたので、次のクエリを作成しました。

SELECT p.pat_ID FROM Patient p INNER JOIN Visit v 
ON (p.pat_ID = v.pat_ID)
WHERE date_of_visit <= '01-01-2005' AND date_of_visit < '01-01-2006'

関係代数ステートメントは私が考えたものを意味し、SQL クエリは正しい結果を返しますか?

4

1 に答える 1

1

WHERE 条件に日付範囲を指定する場合、正しい構文がありますが、最初の演算子が正しくないようです。(>=ない<=)。

開始日を含み、終了日を除く 2 つの日付の間のレコードを選択する必要がある場合 (closed-open 表現と呼ばれます)、構文は次のようになります。

...
WHERE date_of_visit >= date_start AND date_of_visit < date_end

これらの日付を除く2 つの日付の間のレコードを選択する必要がある場合、構文は次のようになります。

...
WHERE date_of_visit > date_start AND date_of_visit < date_end

それらの日付を含む2 つの日付の間のレコードを選択する場合は、次を使用する必要があります。

...
WHERE date_of_visit >= date_start AND date_of_visit <= date_end

大なり演算子と等号演算子を使用すると、日付範囲に境界日付を含めるかどうかを指定できます。

于 2011-12-12T23:49:43.507 に答える