2012-04-24 3 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'は、どれくらいの人が部屋に滞在できるかを示しています。

私の質問は今、どのようにこのテーブルに加わるのですか?私はこれに参加するインナーしようとしたが、1件のホテルが複数の部屋を持っているかもしれないので、その後の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

ホテルに宿泊できる人数はありますか?サンプルデータ/出力を提供できますか? –

答えて

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

関連する問題