我有两个表首先是汽车,第二个是预订,我的搜索字段是
所以,请让我知道如何获得现在没有预订的汽车,如果预订的汽车在日期时间之间,那么它不应该在列表中。列表应该只通过搜索来获得汽车。
汽车表
----------------------------------------------
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
答案 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';