2

我有 3 张桌子:

Hotel {hotelID, hotelName, city}
Room {hotelID, roomNo, price, type}
Booking {hotelID, roomNo, startDate, endDate}

我想找到当月的收入损失(即计算当月每天的收入损失,然后计算总数)

我该怎么做呢?

快速编辑:只需要查找 hotelName = 'Radisson' 的收入

4

2 回答 2

2

应该管用:

SELECT COALESCE(SUM(r.price), 0) 
    FROM Room AS r INNER JOIN Booking AS b ON r.hotelID = b.hotelID AND r.roomNo = b.roomNo 
    INNER JOIN Hotel AS h ON r.hotelID = h.hotelID 
    WHERE (month(b.startDate) > month(current_date()) OR month(b.endDate) < month(current_date()))
    AND h.hotelName = 'Radisson';
于 2013-02-26T08:49:37.227 回答
0

这是您查询的开始。你懒得放数据,所以我懒得去查找mysql形式的查询......

查看每个房间的数据后 - 如果您愿意,您可以合并为一个总和。这就是您编写查询以确保您正确执行每个步骤的方式

select
  ht.hotelid
  ,ht.hotelname
  ,ht.city
  ,rm.roomno
  ,rm.price
  ,rm.type
  ,30 as days -- use your datediff function for month instead of literal 30
  ,30 * rm.price as potential -- use your datediff function instead of literal 30
  ,sum(datediff(day, startdate, enddate)) * rm.price as earned
  --, potential - earned as lost (use the 2 prior columns to calc)      
from hotel ht
join room rm on ht.hotelid = rm.hotelid
left join booking bk on bk.hotelid = rm.hotelid 
   and bk.roomno =bk.roomno
于 2013-02-26T08:54:16.650 回答