mysql - 帮助查询各自酒店下特定日期之间的免费客房分组

标签 mysql

我正在构建一个在线酒店预订系统....使用php和mysql....用户可以搜索和预订特定位置的酒店..搜索条件为
1. 城市或国家
2. 入住和退房日期
3. 入住人数
我的 sql 架构如下...

  1. 表格:酒店
    hotel_id
    酒店名称
    国家/地区 ID
    city_id

  2. 表:房间
    room_id
    hotel_id
    房间名称
    房间价格
    max_guests_allowed
    no_total_rooms
    no_booked_rooms

  3. 表格:预订
    预订_id
    room_id
    hotel_id
    入住日期
    check_out_date

查询两个给定日期之间的空闲房间,并且可以容纳等于或超过人数的房间。用户指定的人员:

SELECT rooms.room_id, 
       rooms.room_name, 
       rooms.max_guests_allowed, 
       rooms.room_price, 
       hotels.hotel_id, 
       hotels.hotel_name 
FROM   hotel,rooms 
WHERE rooms.id NOT IN (SELECT room_id 
                       FROM   reservations 
                       WHERE  check_in_date < '$arrivalDate' 
                       AND    check_out_date > '$leaveDate') 
AND   rooms.max_guests_allowed >= '$no_of_guests'; 

现在...我必须显示结果,例如...

1. Hotel 1 
     Room 1     No. of Rooms Free     Price   Max. Guests Allowed 
     Room 2     No. of Rooms Free     Price   Max. Guests Allowed 
     Room 3     No. of Rooms Free     Price   Max. Guests Allowed

2. Hotel 2
     Room 1     No. of Rooms Free     Price   Max. Guests Allowed 
     Room 2     No. of Rooms Free     Price   Max. Guests Allowed 
     Room 3     No. of Rooms Free     Price   Max. Guests Allowed

etc.. etc...

我应该如何修改我的查询以将房间分组到酒店下,就像我上面提到的......??? 提前非常感谢......

最佳答案

我可能稍微误解了这个问题/查询,但你不能添加:

ORDER BY hotels.hotel_name ASC,rooms.room_name ASC

到查询的最后给你酒店的结果然后房间订单?

编辑以原始格式显示,您可以使用一些与此类似的代码。我在这里用 PHP 完成了它,因为您没有指定您使用的语言:

$currentHotel = -1;
while ($row = mysql_fetch_array())
{
  if ($row["hotel_id"] != $currentHotel)
  {
    print "Hotel " . $row["hotel_id"] . "\n";
    $currentHotel = $row["hotel_id"];
  }

  // print your room details out here
  print "Room " . $row["room_name"];

  // ...
}

关于mysql - 帮助查询各自酒店下特定日期之间的免费客房分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963212/

相关文章:

MySQL:根据最大值删除记录

php - Yii2:为模型的所有字段设置默认值

php多线程,mysql

MySQL 说 : #1064 - You have an error in your SQL syntax creating a stored procedure

mysql - 将整个 webform 数据库转储到 excel 文件或 csv 中?

mysql - SELECT MAX(...) 在存储过程中错误地返回 NULL

mysql - 具有许多嵌套子句的查询速度缓慢

java - 如果某些字段的值已知,则在java中查询hbase

php - 观察数据库并等待 laravel 中的变化

mysql - Skype 按摩系统的数据库架构