2014-01-13 50 views
-4

我希望開發一個會議室預訂系統。請幫忙查詢房間的可用性

到目前爲止,我設計的數據庫如下。

房間:

  1. ID
  2. room_desc

時期:

  • ID
  • period_desc

預訂:

  • ID
  • ROOM_ID
  • reservation_date
  • start_period_id
  • end_period_id

進行預約時,系統將記下用戶預留的start_period_id,end_period_id

當用戶想要進行新的預約時,他/她將指定他/她想要的日期和開始結束的時間段,系統應該給他/她列出在指定期間沒有被預約的房間一段的時間。

我想出了一些SQL,但它沒有爲一些circumstance工作,所以我猜,它仍然是錯誤的。

SQL Fiddle

請SQL幫助查詢房間的可用性。

+1

怎麼會和情況?您對此方案的輸入和預期輸出是什麼? –

+0

什麼是容量?如果期限與查詢匹配,您是否想從容量中折扣一個單位?或者你根本不想展示房間? – Leo

+0

我的系統中的容量意味着會議可以包含的人數,但現在我認爲對我來說最困難的是查詢期間,以便稍後離開容量和日期標準。 – Artisan

回答

1

檢查:

http://sqlfiddle.com/#!2/d07965/20

使用此查詢。只有你缺少的是平等條件。 :

select * 
from rooms A 
    left join reservations B 
on A.id = B.room_id 
and B.reservation_date = '2014-01-11' 
and B.start_period_id <= 11 and B.end_period_id >= 11 
where B.room_id is null; 

問候, 曼西