2016-10-20 2 views
0

Я работал в путешествии CRS protal. для бронирования отеля я хочу заблокировать отель зависит от даты отсечения.Как получить записи из db?

SELECT * FROM (`crs_service_supplier_details` as crs) JOIN `crs_service_room_type_detail` as Room ON `crs`.`service_apartment_id`=`Room`.`service_id` JOIN `crs_room_type` as crt ON `Room`.`room_type_id`=`crt`.`room_type_id` JOIN `crs_service_off_dates` as ccod ON `crs`.`service_apartment_id`=`ccod`.`co_service` WHERE `crs`.`city` like '%Chennai%' AND ('2016-10-27' NOT between ccod.cut_off_from AND ccod.cut_off_from) AND ('2016-10-28' NOT between ccod.cut_off_to AND ccod.cut_off_to) AND `Room`.`edate` > '2016-10-27' GROUP BY `crs`.`service_apartment_id` 

это запрос, но проблема была в разрезе было два дня

co_id co_service cut_off_from cut_off_to cut_off_release_days cut_off 
1  1  2016-10-20  2016-10-22   0    2016-10-20 
2  1  2016-10-27  2016-10-28   0    2016-10-28 

если я искал между 2016-10-20 и 2016-10-22 его получить «2016-10-27 and 2016-10-28» и показать результат.

Если я искал между 2016-10-27 и 2016-10-28, он получил «2016-10-20 and 2016-10-22» и показал результат. он не будет блокировать какие-либо системы. пожалуйста, дайте некоторое представление, чтобы решить это?

ответ

0

Возможно, у вас будет неправильный запрос. Может быть, это поможет, просто измените логику МЕЖДУ МЕЖДУ:

AND ('2016-10-27' NOT BETWEEN ccod.cut_off_from AND ccod.cut_off_to) 
AND ('2016-10-28' NOT BETWEEN ccod.cut_off_to AND ccod.cut_off_from) 

использовать вышеуказанное.

Исходный код с BETWEEN Безразлично `имеют смысл:

AND ('2016-10-27' NOT BETWEEN ccod.cut_off_from AND ccod.cut_off_from) 
AND ('2016-10-28' NOT BETWEEN ccod.cut_off_to AND ccod.cut_off_to) 

Потому что это делает между на одной и той же колонке.

+0

Что вы пишете здесь? «Это не имеет смысла». Или «Это имеет смысл» .. ?? ;) – VishalParkash

+0

Я только что отредактировал свой ответ – krasipenkov

Смежные вопросы