如何获取在日期时间之间未预订或可用的所有车辆

时间:2016-05-16 05:54:28

标签: php mysql

我有两个表首先是汽车,第二个是预订,我的搜索字段是

  • 位置
  • 选择日期时间
  • drop datetime

所以,请让我知道如何获得现在没有预订的汽车,如果预订的汽车在日期时间之间,那么它不应该在列表中。列表应该只通过搜索来获得汽车。

汽车表

----------------------------------------------
id | name | type | location | pincode
----------------------------------------------
 1    A    plain   delhi       110093
 2    B    plain   deldi       110093
 3    C    plain   deldi       110093
 4    D    plain   deldi       110093
 5    E    plain   deldi       110093

预订表

id | car_id | user_id  |      pick_date    | drop_date
-----------------------------------------------------------------------------
 1    1         1        2016-05-10 13:00:00  2016-05-12 16:00:00    
 2    1         1        2016-05-12 18:00:00  2016-05-12 23:00:00

4 个答案:

答案 0 :(得分:1)

在your_startdate和your_enbdate中,您应该插入日期范围

Select cars.* 
from cars
Left join booking on cars.id=booking.id and pick_date between your_startdate and your_enddate
Where booking.id is null

答案 1 :(得分:1)

使用此查询...

在预定日期预订时查找预订的车辆ID,然后在车辆表中找到所有车辆,其中id不等于预订车辆..

SELECT * FROM cars WHERE id NOT IN (SELECT car_id FROM booking 
                                    WHERE pick_date >= '2015-06-03'
                                    AND drop_date <= '2015-06-05'
                                   );

答案 2 :(得分:0)

根据您的搜索变量,首先从选择日期时间和删除日期时间之间的预订表中选择car_id

现在您有一个car_id的列表,该列表是在该日期和时间之间预订的。

使用循环并从汽车表中进行选择查询,其中id != car_id和位置和类型将作为您的搜索变量。

答案 3 :(得分:0)

在查询之间使用并知道预订了哪辆车,并且还知道可用的特定时间车。

given_time_here_search_time =“2016-05-11 15:00:00”; //用户输入

查询应该是这样的

SELECT * FROM cars
WHERE id NOT IN (SELECT car_id 
FROM booking 
WHERE given_time_here_search_time  
between pick_date
AND drop_date ) and location='delhi' and type='plain';