【发布时间】:2012-01-28 11:17:43
【问题描述】:
我正在开发一个包含很多酒店的在线旅游指南。每个酒店都属于一个特定的类别,有很多房间类型,每个酒店房间每个季节都有不同的价格。我想从 4 个表中进行复杂查询,以获得每个酒店类别的酒店总数其中每个酒店房间的最低价格在 2 个由滑块调整的值之间。
我的表格如下:
- 类别
- id_category
- 类别名称
- 酒店
- id_hotel
- 酒店名称
- category_id
- ......
- hotels_room_types
- id_hotels_room_type
- hotel_id
- room_type_id
- ......
- hotels_room_types_seasons
- hotels_room_types_id
- season_id
- 价格
- ......
例如,category_name 的一些值是:酒店、公寓、旅馆
我希望我的结果表有两个字段,如下所示:
酒店 32
公寓 0
宿舍 5
我尝试了以下查询,但它返回的是每个类别的所有酒店总数,而不是房间最低价格介于价格范围之间的酒店数量。
SELECT c.category_name, count( DISTINCT id_hotel ) , min( price ) min_price
FROM categories c
LEFT JOIN hotels w ON ( c.id_category = w.category_id )
LEFT JOIN (
hotels_room_types
INNER JOIN hotels_room_types_seasons ON hotels_room_types.id_hotels_room_types = hotels_room_types_seasons.hotels_room_types_id)
ON w.id_hotel = hotels_room_types.hotel_id
GROUP BY c.category_name
HAVING min_price >=10 AND min_price <=130
谁能帮助我如何编写适当的查询?
谢谢!!!
【问题讨论】:
-
我看不出你是如何应用任何特定季节的。一间酒店的最低价格可能是非旺季 100 美元和旺季 400 美元。另外,您真的想要最低价格吗?而不是最高价格?如果我对支出持谨慎态度,我想知道我可能会遇到的最高价格,并知道有低于此价格的价格,但 MIN() 也可以。