0

データベースの空室状況をチェックする SQL ステートメントを作成しようとしています。次のことを達成する必要があります。

1) ts_roomprefts_room、およびts_requestをチェックして、部屋が予約されているかどうかを確認します

  • 部屋がまったく予約されていない場合、 ts_roompref でts_room_pref.request_idをチェックしてts_request.idと比較しても、 ts_requestのday_idperiod_idは見つかりません。
  • 部屋のエントリが見つからない場合 (つまり、リクエストされていない場合)、その部屋は無料です

2) ts_request と ts_roompref を比較してday_idperiod_id見つかった場合は、 ts_allocationテーブルを参照して部屋のステータスを確認する必要があることを意味します。

  • リクエストのステータスが「Pending,Failed,Declined」の場合、部屋がまだ割り当てられておらず、まだ利用可能であることを意味します
  • ただし、いずれかのリクエスト ステータス = その他の場合は、部屋が割り当てられたことを意味します。

このロジックを実装しようとして、数時間苦労しました。これは私がこれまでに行ったことであり、次のように機能します。

select 1- count(distinct rp.Id) from 
ts_roompref rp, ts_request rq
where rp.room_id= "D.0.02" AND rq.id = rp.request_id
AND day_id like "1" AND period_id like "1";

上記のコードは、事実が保留中、割り当て済み、または拒否されている可能性があることを考慮していません。request_id が見つかった場合は、部屋が予約されていると見なされます。リクエストのステータスを確認するように改善するにはどうすればよいですか (必要な場合)。

これが私のSQLフィドルです:http://sqlfiddle.com/#!2/e1021/48

4

1 に答える 1

0

クエリの「LIKE」条件の近くにパーセント記号があるはずです

... day_id LIKE "%1%" AND period_id LIKE "%1%"
于 2013-02-19T13:41:58.013 に答える