1

2 つのデータ テーブルがあります。

  • tbroom_capacity: roomtype, quantity_room,note

    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

  • tbbooking: guestid, roomtypeid, quantity_room_booking, startDate,endDate

    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

すべての部屋タイプについて、2 つの日付間の残りの部屋数を計算したいと考えています。

例:

スタンダード10室、スーペリア2室、VIP3室の3タイプ計15室

  • ゲスト 1: 2013 年 5 月 26 日から 2013 年 5 月 27 日までの 3 つの標準
  • ゲスト 2: 2013 年 5 月 27 日から 2013 年 5 月 28 日までの 3 つの標準
  • ゲスト 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

しかし、結果は次のとおりです。

  • 6標準
  • 2 優れた
  • 3 VIP

結果は次のようになります。

  • 3標準
  • 2 優れた
  • 3 VIP
4

1 に答える 1

0

予約済みのようなブール列をもう 1 つ追加し、その列の値を使用して値を照会できます。

例:

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

これが部屋タイプの量を取得するのに役立つことを願っています

于 2013-05-29T09:41:18.500 に答える