私は3つのテーブルを持っています:
Hotel {hotelID, hotelName, city}
Room {hotelID, roomNo, price, type}
Booking {hotelID, roomNo, startDate, endDate}
当月の失われた収入を見つけたい (つまり、当月の毎日の失われた収入を数え、合計を計算する)
これを行うにはどうすればよいですか?
簡単な編集: hotelName = 'Radisson' の収入を検索するだけです。
動作するはずです:
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';
これがクエリの始まりです。あなたは怠惰すぎてデータを作成できなかったので、私は怠惰すぎて mysql 形式のクエリを検索することができません...
部屋ごとのデータを確認した後、必要に応じて 1 つの合計にまとめることができます。これは、各ステップが正しいことを確認するためにクエリを作成する方法です
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