Я не уверен, возможно ли это с MySQL, и это немного сложнее, но я постараюсь объяснить как можно лучше.
Я исправляю систему доступности жилья и проверки цен на основесуществующая база данных.Посетитель сможет выбрать дату приезда и отъезда, и я хочу показать все цены / предложения, доступные на эти даты.Легко.Однако предложение может быть настроено так, чтобы оно было доступно только для первой части данного диапазона дат, и для этого типа номера может быть установлена вторая ставка, охватывающая более позднюю часть диапазона дат.
например, Iвыберите 29 сентября до 3 октября для моего пребывания.Для комнаты 1 установлена ставка на период с 1 по 30 сентября, а для ставки на 1 - 31 октября - вторая ставка.
Могу ли я запросить таблицу, чтобы проверить, есть ли помимо тарифов, охватывающих весь диапазон,объединяет (или, может быть, даже больше) тарифы для одного и того же номера комнаты, которые вместе охватывают диапазон дат, и извлекает тарифы и описания для них?
В приведенном ниже запросе проверяются базовые тарифы, действительные между указанными датами (где roomtype - это идентификатор комнаты):
SELECT id, caption, price, startdate, enddate, nights, roomtype,
(@arrival := DATE('2011-09-29')) AS arrivaldate,
(@departure := DATE('2011-10-05')) AS departuredate
FROM bnbrates
WHERE
bnb_ref = 16639
AND active = 'TRUE'
AND rooms != 0
AND @arrival < enddate
AND @departure > startdate
AND roomtype != ''
ORDER BY roomtype, enddate, startdate, price;
, и это пример сохраненных данных:
id | caption | price | startdate | enddate | nights | roomtype | arrivaldate | departuredate
-------------------------------------------------------------------------------------------------------------------
23553 | Single | 50 | 2011-10-01 | 2011-10-31 | 1 | 1064 | 2011-09-29 | 2011-10-05
23544 | Double | 55 | 2011-09-01 | 2011-09-30 | 1 | 1647 | 2011-09-29 | 2011-10-05
23545 | Double | 80 | 2011-10-01 | 2011-10-31 | 1 | 1647 | 2011-09-29 | 2011-10-05
30312 | Triple | 109 | 2011-09-01 | 2011-09-30 | 1 | 1649 | 2011-09-29 | 2011-10-05
34234 | Executive | 109 | 2011-09-01 | 2011-09-30 | 1 | 1653 | 2011-09-29 | 2011-10-05
23569 | Executive | 99 | 2011-10-01 | 2011-10-31 | 1 | 1653 | 2011-09-29 | 2011-10-05
Желаемый результат, например, объединит 23544 с 23545 и 34234с 23569
Заранее благодарю за помощь и извиняюсь, если это не имеет смысла ...