Между запросами в базе данных

Я пытался решить эту проблему целую вечность и до сих пор не повезло.

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

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

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

Любое предложение исправить этот код высоко ценится.

Отношения Таблицы

SELECT *
FROM Vehicles
WHERE Vehicles.vehicle_id NOT IN 
        (
        SELECT distinct Booking.[vehicle id]
        FROM Booking
     WHERE (
    [Enter Start Date] BETWEEN booking.start_rent_date
        AND booking.end_rent_date
    )
OR (
    [Enter End Date] BETWEEN booking.start_rent_date
        AND booking.end_rent_date
    )
 );

person leon Hill    schedule 13.12.2016    source источник


Ответы (1)


Я думаю об этом как left join:

select v.*
from vehicles v left join
     bookings b
     on v.vehicle_id = b.vehicle_id and
        b.start_rent_date <= @EnterEndDate and
        b.end_rent_date >= @EnterStartDate
where b.vehicle_id is null;

Транспортное средство не является бесплатным, если есть аренда, которая начинается до желаемой даты окончания и заканчивается после желаемой даты начала. left join исключает их. Вы также можете использовать NOT EXISTS или NOT IN для эквивалентной логики.

РЕДАКТИРОВАТЬ:

О, вы используете MS Access. . .

select v.*
from vehicles as v left join
     (select b.*
      from bookings as b
      where b.start_rent_date <= @EnterEndDate and
            b.end_rent_date >= @EnterStartDate
     ) as b
     on v.vehicle_id = b.vehicle_id
where b.vehicle_id is null;
person Gordon Linoff    schedule 13.12.2016
comment
я получаю синтаксическую ошибку для отсутствующего оператора есть идеи, почему они могут происходить - person leon Hill; 13.12.2016
comment
Это работало для меня в начале, но теперь, когда я пробую это, все машины показывают какое-либо представление о том, как это происходит. - person leon Hill; 13.12.2016
comment
неважно, вводил даты неправильно, чувак ... Большое спасибо, я пару часов пытался решить это, я так вам обязан, еще раз спасибо - person leon Hill; 13.12.2016