首页 文章

试图通过查询

提问于
浏览
0

大家好我试图在我设置的数据库上运行查询时遇到问题 . 我正在 Build 一个汽车租赁数据库,我正在尝试运行一个查询,以查看哪个车辆可以在两个日期之间租用 . 我有两个表参与查询车辆预订和车辆数据库 . 当我运行查询时,我可以看到哪辆车可用,但它只显示有关预订数据库的结果 . (也显示重复的值)是否有一种方法可以传递数据以显示基于车辆表中所有车辆的结果 . 对不起,如果这有点令人困惑任何提示非常感谢 .

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;

2 回答

  • 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
    • 显示所有可用的车辆:
    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)
    

相关问题