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

私は今、新しいテーブル、「num_people」という名前の列を持つテーブル「hotel_rooms」に参加しようとしています。これは、部屋に何人の人が滞在できるかを示しています。

私の質問は、どうすればこのテーブルに参加できるかということです。これを内部結合しようとしましたが、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

私はあなたが私を助けてくれることを本当に望んでいます..:)さらに情報が必要な場合は、教えてください。

敬具、

ロビン

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 に答える