У меня проблема с sql. Мне нужно написать сложный запрос для таблицы, описанной ниже
id date quantity roomtypeid hotelid
Пользователь будет искать гостиницы, используя регистрацию и дату выезда, и указывать количество номеров (количество) в поисковом запросе, поэтому мне нужно сделать, чтобы получить идентификаторы отелей из таблицы выше, которые имеют минимальное количество номеров, доступных при регистрации заезда, чтобы проверить Дата.
1 04-01-2013 3 4 10 2 04-02-2013 3 4 10 3 04-03-2013 3 4 10 4 04-04-2013 3 4 10 5 04-01-2013 3 4 11 6 04-02-2013 3 4 11 7 04-03-2013 3 4 11 8 04-04-2013 3 4 11 9 04-01-2013 3 4 12 10 04-02-2013 3 4 12
Итоговый запрос должен предоставить только 10,11 в качестве идентификатора отеля, если пользователь хочет забронировать номер с 04-01-2013 по 04-03-2013 с 3 номерами.
С уважением, Субаш
UPDATE2
SELECT `hotelid` FROM table1 WHERE `date` BETWEEN '2013-04-01' AND '2013-04-03' AND quantity >=3 GROUP BY `hotelid` HAVING COUNT(*) = DATEDIFF('2013-04-03', '2013-04-01') + 1
3 в предложении WHERE
– это количество комнат, которые должны быть доступны.
Вывод
| HOTELID | ----------- | 10 | | 11 |
SQLFiddle
SELECT DISTINCT(`hotelid`) FROM `tableName` WHERE `date` = $checkindate AND `date` = $checkoutdate AND `quantity` = $numberofroom
Используйте вышеуказанный запрос. это только фиктивный запрос изменяет его согласно вам (имена полей и имена переменных)