私は多くの同様の質問を読んだが、それは自分のために働くことができませんでした。私はホテルの予約システムを作成しており、予約された予約日に少なくとも1つの部屋があるホテルをリストしたいと思います。ここでMySQL - 特定の日付に利用可能なホテルを見つける
だとここで私はこれまで
SELECT
ac.id,
ac.name,
ac.link,
ac.type,
ac.country,
co.name AS countryName,
ac.state,
st.statename,
ac.cityid AS cityId,
ci.name AS cityName,
ac.addr,
ac.featuredimage,
ac.amenities,
ac.starrating,
ac.bookings_received,
ro.roomprice,
SUM(ro.numberofrooms) AS totalRooms,
roomsBooked = (
SELECT
*,
SUM(numberofroomsbooked) AS roomsBooked
FROM
bookings
WHERE
reservationto >= '2016-07-07' AND reservationfrom <= '2016-07-09'
AND hotelid = ro.hotel
)
FROM
accomodations ac
JOIN countries co ON ac.country = co.id
JOIN states st ON ac.state = st.id
JOIN city ci ON ci.id = ac.cityid
JOIN room ro ON ac.id = ro.hotel
WHERE
ac.active = 1 AND ac.delete = 0
GROUP BY
ac.id
を持っているクエリは、私は、MySQLへの新たなんだだと、これは本当に手に負えなくなってきています。アイデアは、ホテルの総客室数を計算し、指定された期間内に予約された客室の総数を差し引くことです。私はそれについていくつかの助けを得ることができますか?
サブクエリ完全にそれ自身ではなく、この1で
SELECT
*,
SUM(numberofroomsbooked) AS roomsBooked
FROM
bookings
WHERE
reservationto >= '2016-07-07' AND reservationfrom <= '2016-07-09'
AND hotelid = ro.hotel
作品。
サンプルデータを追加すると、期待した結果が得られます。 – Blank
idem with @ 10086 –
私のデータをsqlfiddleに追加できません。それ以外の方法をお勧めしますか? – VeeK