2016-12-12 6 views
0

hey jeder ich habe ein Problem mit dem Versuch, eine Abfrage auf einer Datenbank ausführen, die ich eingerichtet habe. Ich richte eine Fahrzeugmietdatenbank ein und ich versuche eine Abfrage zu starten, um zu sehen, welches Fahrzeug zwischen zwei Daten zur Vermietung verfügbar ist. Ich habe zwei Tabellen, die an der Abfrage einer Fahrzeugbuchung und einer Fahrzeugdatenbank beteiligt sind. Ich kann sehen, welches Fahrzeug verfügbar ist, wenn ich meine Abfrage ausführe, aber es zeigt nur die Ergebnisse in Bezug auf die Buchungsdatenbank an. (Es werden auch doppelte Werte angezeigt.) Gibt es einen Weg, auf dem ich die Daten weitergeben kann, um mir die Ergebnisbasis aller Fahrzeuge in der Fahrzeugtabelle anzuzeigen. Entschuldigung, wenn das ein bisschen verwirrend ist, werden irgendwelche Tipps sehr geschätzt.Versuchen, eine Abfrage zu übergeben

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; 

Antwort

0

-Um alle verfügbaren Fahrzeuge zeigen:

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 was meinst du mit x1 und x2 bin ich nehme an, dass in meiner Abfrage – paul

+0

Ich bekomme immer einen fehlenden Artikel Beitrag, wenn ich versuche und die Abfrage ausführen – 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 
       ) 
     ) 

Sie haben den Satz von Autos zu erhalten, die zwischen diesen Daten vermietet werden und sie aus der Abfrage ausschließen, das ist, warum Sie not in verwenden .

Die Abfrage ist richtig, Sie müssen nur den Anfangs-/Enddatum Teil bearbeiten.

+0

Danke ich bekomme immer einen Fehler obwohl ist, dass gerade becuase ich müssen einen Parameter erstellen, wo es Startdatum eingeben soll – paul

+0

ohh yess Sie sollten die Start-und Enddatum Parameter setzen! Testen Sie die Abfrage zuerst mit dem dbms Sie verwenden. Dann sollten Sie die Datumsparameter aus dem Programm, das Sie verwenden –

+0

i bekomme einen Fehler, der besagt, dass ich vermisse),], im Query - Ausdruck Vehicle.vehicle_id NICHT IN "bis zum Ende davon. irgendeine Idee, was das Problem damit sein könnte – paul

Verwandte Themen