2

我目前在使用 MySQL 时遇到了一个烦人的问题。

我从通过以下查询从数据库中获取酒店的地方开始:

SELECT `Hotel`.*,
        `Hotellocations`.`address`,
        `Hotellocations`.`city`, 
        `Hotellocations`.`lat`,
        `Hotellocations`.`lon`, 
        `Hotelfacilities`.`facilities`,
        `hotel_rooms` AS `hotelroomS` 
FROM `hotels` AS `Hotel` 
    LEFT JOIN `hotel_locations` AS `Hotellocations` 
        ON (`Hotel`.`hotelid` = `Hotellocations`.`hotelid`) 
    LEFT JOIN `hotel_facilities` AS `Hotelfacilities` 
        ON (`Hotel`.`hotelid` = `Hotelfacilities`.`hotelid`) 
WHERE MATCH(`hotel`.`title`) AGAINST("+Amsterdam" IN BOOLEAN MODE) 
    AND `hotel`.`min_price` != 0 AND `Hotel`.`min_price` >= 0 
    AND `Hotel`.`max_price` <= 500 
LIMIT 1

我现在正在尝试加入一个新表,即“hotel_rooms”表,它有一个名为“num_people”的列,这表示有多少人可以留在房间里。

我现在的问题是,我如何加入这张桌子?我尝试过内部加入,但随后 MySQL 返回多行(来自hotel_rooms),因为一家酒店可能有多个房间..

我的酒店表是这样的:

id | hotelid | title | slug | description | min_price | max_price | stars | checkin | checkout

hotel_rooms 表是这样的:

roomid | hotelid | ratetypeid | providerid | title | description | num_people | min_price | calendarcode

我真的希望你能帮助我.. :) 如果您需要更多信息,请告诉我。

亲切的问候,

罗宾

4

1 回答 1

1

看起来您需要酒店的可用客房总数。与其直接加入 hotel_rooms 表,不如将加入设为:

join ( select hotelid, sum(num_people) as hotel_rooms
       from hotel_rooms
       group by hotelid) hr
  on hr.hotelid = hotel.hotelid
于 2012-04-24T08:15:18.507 回答