Ich habe viele ähnliche Fragen gelesen, aber konnte es nicht für mich arbeiten lassen. Ich erstelle ein Hotelbuchungssystem und möchte Hotels auflisten, die mindestens ein Zimmer am gewünschten Buchungsdatum zur Verfügung haben.MySQL - Finden Sie Hotels, die an bestimmten Daten verfügbar sind
Hier ist meine Tabellenstruktur
Und hier ist die Frage, die ich bisher habe
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
Ich bin neu in MySQL und das ist wirklich aus der Hand. Die Idee besteht darin, die Gesamtzahl der Zimmer für ein Hotel zu berechnen und die Gesamtzahl der gebuchten Zimmer innerhalb eines bestimmten Datumsbereichs abzuziehen. Kann ich Hilfe bekommen?
Die Sub-Abfrage
SELECT
*,
SUM(numberofroomsbooked) AS roomsBooked
FROM
bookings
WHERE
reservationto >= '2016-07-07' AND reservationfrom <= '2016-07-09'
AND hotelid = ro.hotel
funktioniert perfekt auf die eigenen es aber nicht in dieser.
Fügen Sie einige Beispieldaten hinzu und Ihr erwartetes Ergebnis ist hilfreicher. – Blank
idem mit @ 10086 –
Ich bin nicht in der Lage, meine Daten zu sqlfiddle hinzuzufügen, schlagen Sie anders vor? – VeeK