2012-04-24 61 views
2

我目前對MySQL有一個惱人的問題。MySQL - 僅加入1個結果或由其他表限制

我開始在那裏,我通過這個查詢得到從我的數據庫酒店點:

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

您想要可以入住酒店的總人數?你能提供一些樣本數據/輸出嗎? – 2012-04-24 08:12:18

回答

1

看起來你需要在酒店提供的客房總數。而不是直接加入hotel_rooms表,請加入,

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

謝謝alott Vivek! – robinl 2012-04-26 09:48:23