1. Задумайтесь, как MySQL должен определить, какое именно значение id выбрать при группировке, и почему именно его.
2. Если price может быть разным для одного и того же type, то предыдущий вопрос относится и к полю price.
3. Если для одного и того же type значение price всегда одно и то же, то надо нормализовать базу, вынеся соотношение type : price в отдельную таблицу (третья нормальная форма).
Сразу узнать нужное.Для этого мне нужно хранить все свободные даты. Я над этим вопросом 3 дня сижу. Я не могу представить такую форму хранения свободных дат, чтобы можно было сразу по 200 номерам пройтись и получить из них свободные.
А что вам мешает инвертировать логическое условие? Достаточно просто NOT(...), если не знаете булевой логики и не можете упростить выражение.
Какой болван Вам об этом сказал?
Если полученные "в начале все номера, которые заняты в этот промежуток", будут получены только для того, чтобы получить все остальные номера, то это [censored]... в смысле лишние и ненужные операции.
SELECT DISTINCT room_id FROM `bron` WHERE
'2022-03-04 13:00:00' <= end AND '2022-03-04 13:00:00' >= start OR
'2022-03-06 11:00:00' <= end AND '2022-03-06 11:00:00' >= start
P.S. Возникает ощущение, что вы хотите обязательно искать в БД запись о том, что что-то есть, а ведь можно проверять отсутствие нужной записи =)
Запрос: "2 взрослых +1 ребенок", на него имеем таблицу с идентификаторами всех гостиниц, в которых есть удовлетворяющие этому запросу номера.
По идее можно и ты даже делаешь всё для этого верно.
<?php
ignore_user_abort(true);
set_time_limit(0);
ob_start();
function tlgrm($method, $data) {
#функция отправки сообщения
}
header('Connection: close');
header('Content-Length: '.ob_get_length());
ob_end_flush();
flush();
tlgrm('sendMessage', ['text'=> "ответ 1"]);
sleep(100);
tlgrm('sendMessage', ['text'=> "ответ 2"]);