Проблема на MySQL Query на между оператором с php - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть MySQL таблица «room_booking», и эта таблица содержит два столбца: «start_time» и «end_time».Я хочу проверить время бронирования конференц-зала.Предположим, что если номер забронирован с 14:10 до 15:15.Тогда другая запись не должна вставляться в промежутке между этим временем.Мой запрос

$queryCheck = "SELECT start_time,end_time FROM room_booking AND (SELECT * FROM (room_booking) WHERE (start_time NOT BETWEEN '".$new_start_time."' AND '".$end_start_time."') AND (end_time NOT BETWEEN '".$new_start_time."' AND '".$end_start_time."'))";

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы можете использовать это: -

INSERT INTO `room_booking` (`room`,`start_time`,`end_time`) 
SELECT 'A','2019-02-25 07:55:00','2019-02-25 08:00:00' FROM `room_booking`
WHERE NOT EXISTS
    (SELECT * FROM `room_booking` WHERE '2019-02-25 07:55:00' BETWEEN `start_time` AND `end_time`)

Дайте мне знать, если у вас есть сомнения?

Я прилагаю снимок экрана для объяснения enter image description here.

enter image description here

0 голосов
/ 25 февраля 2019

Мне кажется, это просто проблема перекрывающегося диапазона, и в этом случае вы хотите возвращать записи, которые , а не перекрываются с временем начала и окончания ввода.Попробуйте этот запрос:

SELECT *
FROM room_booking
WHERE existing_end < ? OR existing_start > ?;

К двум ? заполнителям, указанным выше, вы будете привязывать, по порядку, $new_start_time и $end_start_time.Таким образом, вы получите следующий запрос:

SELECT *
FROM room_booking
WHERE existing_end > $new_start_time OR existing_start > $end_start_time;
...