MySQL的。预订类型最多的房间

时间:2011-11-26 15:24:16

标签: mysql sql database max

我有下一个问题: 纽约每家酒店最常预订的房型是什么?

表:

 1. Hotel - city, hotelNo[primarykey]
 2. Room - roomNo[primarykey], type, hotelNo[foreignkey]
 3. Booking - roomNo[foreignkey], hotelNo[foreignkey]

所以,假设我在这个城市有3家酒店,我需要获得列表:--------

NumberOfBookings, MostBookedType, HotelName

有什么建议吗?提前谢谢!

这是我的代码:

SELECT type, r.hotelNo, r.roomNo
FROM room r
INNER JOIN booking b ON r.roomNo=b.roomNo
WHERE r.hotelNo = ANY
(
   SELECT hotelNo
   FROM hotel
   WHERE city = "New York"
)

它显示了纽约酒店的房间类型,酒店和房间的预订。

我需要了解如何创建一个显示类型的表(主要是预订的),numberOfBookings(预订类型最多),hotelNo(房间类型)

1 个答案:

答案 0 :(得分:2)

select
      hotel.city HotelName,
      room.type BookedType,
      count(*) NumberOfBookings
   from
      Booking B
         join Hotel
            on B.HotelNo = Hotel.HotelNo
         join Room
            on B.HotelNo = Room.HotelNo
           AND B.RoomNo = room.RoomNo
   group by
      B.HotelNo,
      room.Type
   order by
      count(*) desc

现在,这个例程可以从Hotel A首先拉出大床,从Hotel X第二张双人床和第三张酒店的双人床,以及从酒店A出来的King ...因为看起来你特别希望每家酒店和类型房间......

我会确保您在预订表上有一个基于(HotelNo,RoomNo)的索引,以帮助优化该组...