【发布时间】:2016-07-04 19:56:52
【问题描述】:
我已经阅读了许多类似的问题,但我无法使其适合自己。我正在创建一个酒店预订系统,我希望列出在请求的预订日期至少有一间客房可供预订的酒店。
这是我目前的查询
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 新手,这真的是一发不可收拾。这个想法是计算酒店的房间总数并减去给定日期范围内预订的房间总数。我能得到一些帮助吗?
子查询
SELECT
*,
SUM(numberofroomsbooked) AS roomsBooked
FROM
bookings
WHERE
reservationto >= '2016-07-07' AND reservationfrom <= '2016-07-09'
AND hotelid = ro.hotel
它自己完美地工作,但不是在这个。
【问题讨论】:
-
添加一些示例数据,您的预期结果会更有帮助。
-
我无法将我的数据添加到 sqlfiddle,您还有其他建议吗?
标签: mysql