MySQL - 仅加入1个结果或限制其他表

时间:2012-04-24 08:08:02

标签: mysql join

我目前在使用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

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

亲切的问候,

罗宾

1 个答案:

答案 0 :(得分:1)

看起来您需要酒店提供的房间总数。不要直接加入hotel_rooms表,而是将连接设为,

join ( select hotelid, sum(num_people) as hotel_rooms
       from hotel_rooms
       group by hotelid) hr
  on hr.hotelid = hotel.hotelid