Я пытаюсь запустить запрос, чтобы вытащить доступные комнаты, и он присоединяется к таблице резервирования, чтобы увидеть доступные комнаты за определенный период (дата начала и окончания). Я рисую пробел здесь, и я думаю, что это довольно простой запрос, я просто не могу придумать, как его создать.Mysql: Сравнение дат и присоединение
То, что я до сих пор, что должно быть исправлено
SELECT *
FROM room
LEFT JOIN reservation ON room.id = reservation.room_id
WHERE reservation.id is null or
:startdate > reservation.enddate or
:enddate < reservation.startdate
Мой выше запрос будет возвращать результаты для помещений с несколькими оговорками, которые могут удовлетворить ИНЕКЕ хотя может быть резервирование в пределах диапазона дат.
Я не думал использовать предикат «не существует», но этот запрос по-прежнему будет возвращать комнату с несколькими резервированиями, и один удовлетворяет условию where, даже если резервирование может конфликтовать с данными датами начала и окончания. – Ralph
@Ralph О, верно, кажется, у меня логика неправильная ... повесить на – jpw
@Ralph Должно быть правильно сейчас, я думаю. – jpw