Предупреждение: oci_execute (): ORA-00907: отсутствует правая скобка

Мне трудно решить эту проблему с помощью моего кода. Я все еще новичок в Oracle / PHP / SQL. Я пробовал много решений, и ни одно из них не работает. Вот код и ошибка.

$searchsql = "SELECT rm.room_ID, rm.room_no
FROM bsi_room rm
WHERE rm.roomtype_id = ".$roomTypeId."AND rm.capacity_id = ".$capcityid."".$extraSearchParam."AND rm.room_id NOT IN
(SELECT resv.room_id
FROM bsi_reservation resv, bsi_bookings boks
WHERE     boks.is_deleted = FALSE
AND resv.bookings_id = boks.booking_id
AND resv.room_type_id = ".$roomTypeId."AND (('".$this->mysqlCheckInDate."' BETWEEN boks.start_date AND DATE_SUB(boks.end_date, INTERVAL 1 DAY))
OR (DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) BETWEEN boks.start_date AND DATE_SUB(boks.end_date, INTERVAL 1 DAY))               OR (boks.start_date BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY))                         OR (DATE_SUB(boks.end_date, INTERVAL 1 DAY) BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY))))";

Предупреждение: oci_execute (): ORA-00907: отсутствует правая скобка

Я что-то делаю не так?

0

Решение

Линия:

AND (('".$this->mysqlCheckInDate."' BETWEEN boks.start_date AND DATE_SUB(boks.end_date, INTERVAL 1 DAY))))

Должно иметь 3 символа правой круглой скобки вместо 4. Блок подзапроса заканчивается слишком рано.

0

Другие решения

Понял. Я забыл поставить to_date для всех типов данных даты. Теперь все в порядке

0

По вопросам рекламы [email protected]