我正在開發一個有很多酒店的在線旅遊指南。每家酒店都屬於特定類別,房間類型很多,每個酒店房間每個季節的價格都不一樣。我想從4個表中進行復雜的查詢,以獲得每個酒店類別的酒店總數,其中每個酒店房間的最低價格在由滑動條調整的2個值之間。來自4個表格的複雜sql查詢
我的表是這樣的:
- 分類
- id_category
- CATEGORY_NAME
- 酒店
- id_hotel
- HOTEL_NAME
- 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()也可以。 – DRapp 2012-01-28 11:33:00