2016-12-12 6 views
0

Привет всем, у меня возникла проблема с попыткой запустить запрос в базе данных, которую я создал. Я создаю базу данных о прокате автомобилей, и я пытаюсь запустить запрос, чтобы узнать, какой автомобиль доступен для аренды между двумя датами. У меня есть две таблицы, которые участвуют в запросе на бронирование автомобиля и базу данных о транспортных средствах. я могу видеть, какой автомобиль доступен, когда я запускаю свой запрос, но он показывает только результаты в отношении базы данных бронирования. (также появляются повторяющиеся значения) есть ли способ, с помощью которого я могу передать данные, чтобы показать мне базу результатов всех транспортных средств в таблице транспортных средств. Извините, если это немного запутывает любые советы, очень ценится.Попытка пройти через запрос

SELECT Vehicles.[Vehicle ID] 
    ,Vehicles.Make 
    ,Vehicles.Model 
    ,Vehicles.[Type of Vehicle] 
    ,Vehicles.Year 
    ,Vehicles.Colour 
    ,Vehicles.[Price/ Per Day] 
    ,Vehicles.[Out of Service] 
    ,Booking.End_Rent_Date 
    ,Booking.Start_Rent_Date 
FROM Vehicles 
INNER JOIN Booking 
    ON Vehicles.[Vehicle ID] = Booking.[Vehicle ID] 
WHERE End_Rent_Date < [enter start date] 
    OR [enter end date] < Start_Rent_Date; 

ответ

0

-Чтобы показать все доступное средство:

SELECT * 
FROM vehicles x1 
WHERE x1.vehicle_id NOT IN 
    ( 
      SELECT vehicle_id 
      FROM booking x2 
      WHERE ( 
         enter_start_date BETWEEN x2.start_rent_date AND  
x2.end_rent_date) 
      OR  ( 
         enter_end_date BETWEEN x2.start_rent_date AND  
x2.end_rent_date) 
+0

@willium, что вы имеете в виду под x1 и x2? Я полагаю, что это нужно в моем запросе – paul

+0

Я продолжаю получать сообщение об ошибке при попытке запустить запрос – paul

1
SELECT * 
FROM Vehicles 
WHERE Vehicles.vehicle_id NOT IN (
     SELECT Vehicle.vehicle_id 
     FROM Booking 
     WHERE (
       start_date BETWEEN booking.enter_start_date 
        AND booking.enter_end_date 
       ) 
      OR (
       end_date BETWEEN booking.enter_start_date 
        AND booking.enter_end_date 
       ) 
     ) 

Вы должны получить множество автомобилей, которые арендуются между этими датами и исключить их из вашего запроса, то почему вы используете not in ,

Запрос верный, вам просто нужно отредактировать часть даты начала и окончания.

+0

Спасибо, я все время получаю сообщение об ошибке, хотя это только потому, что я необходимо создать параметр, в котором говорится, введите дату начала ввода – paul

+0

ohh yess, вы должны установить параметры начала и конца даты! Сначала проверьте запрос, используя используемые вами dbms. Затем вы должны взять параметры даты из используемой программы –

+0

i продолжайте получать сообщение об ошибке),], в выражении запроса Vehicle.vehicle_id NOT IN «до конца». Любая идея, в чем может быть проблема с этим – paul