Вам необходимо четко разделить проверки на shop_id
и временных диапазонах:
SELECT *
FROM usr_booking
WHERE
shop_id = 21 AND
(start_time BETWEEN '10:10:00' AND '11:01:00' OR
end_time BETWEEN '10:10:00' AND '11:01:00');
Оператор AND
в MySQL имеет более высокий приоритет, чем оператор OR
.Итак, ваш текущий запрос на самом деле оценивается так:
SELECT *
FROM usr_booking
WHERE
(shop_id = 21 AND
start_time BETWEEN '10:10:00' AND '11:01:00') OR
end_time BETWEEN '10:10:00' AND '11:01:00';
Очевидно, что это не та логика, которую вы, вероятно, предполагали.