2013-05-25 38 views
1

我有兩個數據表間可用房間數量:計數兩個日期

  • tbroom_capacityroomtypequantity_roomnote

    CREATE TABLE `tbroom_capacity` (
        `id` int(10) NOT NULL DEFAULT '0', 
        `roomtype` varchar(30) COLLATE utf8_bin DEFAULT NULL, 
        `quantity_room` int(20) DEFAULT NULL, 
        `note` varchar(50) COLLATE utf8_bin DEFAULT NULL, 
        PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 
    

數據: https://dl.dropboxusercontent.com/u/50542216/1.png

  • tbbookingguestidroomtypeidquantity_room_bookingstartDateendDate

    CREATE TABLE `tbbooking` (
        `guestid` int(20) DEFAULT NULL, 
        `roomtypeid` varchar(20) COLLATE utf8_bin DEFAULT NULL, 
        `quantity_room_booking` int(20) DEFAULT NULL, 
        `startDate` date DEFAULT NULL, 
        `endDate` date DEFAULT NULL, 
        `id` int(11) NOT NULL DEFAULT '0', 
        PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 
    

數據:

https://dl.dropboxusercontent.com/u/50542216/2.png

我想計算兩個日期之間的剩餘房數與每一個房間-類型。

一個例子:

共計15間帶3型:10標準,2上位,3 VIP

  • 旅客1:3標準從2013年5月26日到2013年5月27日
  • 嘉賓2:從2013年5月27日3標準,2013年5月28日
  • 遊客3要預訂房間,從2013年5月26日至2013年5月28日

我嘗試這樣做檢索總不可用的房間:

SELECT sum(quantity_room_booking) FROM tbbooking 
where DATE_ADD(endDate,INTERVAL -1 DAY) >= '2013-05-26' 
and startDate <= '2013-05-28' GROUP BY roomtypeid 

但結果是:

  • 標準
  • 2優越
  • 3 VIP

的結果應該是:

  • 標準
  • 2優越
  • 3 VIP
+2

[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/)請參閱[關於堆棧溢出](http://stackoverflow.com/關於)。 –

+2

顯示你的表格結構和一些示例數據以節省每個人一些時間 – Drew

+0

@DrewPierce:我已經添加了我的結構數據,請幫助我。謝謝! – user1237902

回答

0

可以添加等多一個布爾列預訂和使用該列值

例查詢值:

SELECT sum(quantity_room_booking)FROM tbbooking where DATE_ADD(endDate,IN TERVAL -1 DAY)> ='2013-05-26' and startDate < ='2013-05-28'並且已預訂= true GROUP BY roomtypeid

我希望這會幫助您獲得足夠的空間鍵入