我正在构建一个在线酒店预订系统....使用php和mysql....用户可以搜索和预订特定位置的酒店..搜索条件为
1. 城市或国家
2. 入住和退房日期
3. 入住人数
我的 sql 架构如下...
表格:酒店
hotel_id
酒店名称
国家/地区 ID
city_id
表:房间
room_id
hotel_id
房间名称
房间价格
max_guests_allowed
no_total_rooms
no_booked_rooms
表格:预订
预订_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/