Проверка наличия арендованного автомобиля

Я работаю над платформой по аренде автомобилей, но мне нужно посмотреть, какие автомобили доступны в зависимости от даты.

Таблицы выглядят следующим образом

Reservations (id, user_id, vehicle_id, pickup_time, dropoff_time)

Vehicle (id, etc (the rest of the columns do not really matter))

Я пробовал много вещей, но я продолжаю получать забронированные автомобили.

что ты уже испробовал?

Mureinik 06.07.2019 17:40

Подсказка LEFT JOIN WHERE ... IS NULLNOT IN() и NOT EXISTS()..

Raymond Nijland 06.07.2019 17:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

select v.*
from vehicle v
where not exists (select 1
                  from reservations r
                  where r.vehicle_id = v.id and
                        @date <= r.dropoff_time and
                        @date >= r.pickup_time
                 );

Примечания:

  • @date это время, которое вы хотите проверить.
  • Обычно аренда предоставляется на период, поэтому обычно бывает два раза. Но ваш вопрос явно об одной дате. Задайте другой вопрос, если это не совсем то, что вы хотели задать.
  • Обычно существует задержка между высадкой и следующей посадкой в ​​целях технического обслуживания.

Вау, спасибо! Также спасибо за быстрый ответ @Gordon. Да, ты прав, это было предназначено для двух свиданий. высадка и пикап. Как бы я продолжал делать это, какие-нибудь советы или что-то в этом роде?

Ronald McDonald 06.07.2019 18:22

Другие вопросы по теме