@Starvings

Как сделать запрос к двум таблицам SQL?

У меня есть две таблицы.
Первая:
Хранит список доступных мест, от первого до последнего. Могут появляться новые места или удаляться текущие, это будет отражено в виде еще одного столбца, пока что опустил, что бы не усложнять запрос.
id, number;
Вторая:
Хранит весь список резервов: какой юзер на какую дату забронировал себе опредленное место.
id, Place_number (номер места), Date_reserve (дата), Status(занято), User(пользователь);

Как реализовать запрос, который будет выбирать случайное свободное место на указанную дату?
Возможно я пытаюсь сделать что-то не правильное, но окончательно встал в тупик и буду рад любым советам.
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Каждое место резервируется на одну дату, не на интервал? Тогда сравнительно просто.
Делаешь LEFT JOIN, слева - таблица мест, справа таблица резервов, соединяешь по совпадению id места И совпадению даты резерва с назначенной.
Тогда те места, у которых на назначенную дату нет резерва, будут иметь в соответствующих столбцах (типа id юзера) NULL. Тогда если поставить WHERE id юзера IS NULL, останутся только места, свободные на эту дату.
Ну а выбор случайного как обычно: ставишь ORDER BY RANDOM() LIMIT 1

Я бы так к этому подошёл, во всяком случае. Может, есть способ лучше.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
iMedved2009
@iMedved2009
Не люблю людей
Если не думать об оптимизации или список не велик то
order by random() limit 1;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы