Mysql 如何编写此条件的查询

Mysql 如何编写此条件的查询,mysql,Mysql,我正在为一家旅行社做一个项目。我得把三张桌子合在一起 车辆详细信息我存储所有车辆详细信息 rac\u详细信息预订车辆详细信息 车主车主详细信息 预订时,我需要在rac\u details中搜索该日期范围内的可用车辆 $qry=" SELECT `vehicle_details`.*, `owner`.`owner_name`, `owner`.`id` As owner_id, `rac_details`.`from_date`, `rac_details`.`t

我正在为一家旅行社做一个项目。我得把三张桌子合在一起

  • 车辆详细信息
    我存储所有车辆详细信息
  • rac\u详细信息
    预订车辆详细信息
  • 车主
    车主详细信息
预订时,我需要在
rac\u details
中搜索该日期范围内的可用车辆

      $qry="    SELECT `vehicle_details`.*, `owner`.`owner_name`, `owner`.`id` As owner_id, 
    `rac_details`.`from_date`, `rac_details`.`to_date`, 
    `rac_details`.`vehicle_id`
     FROM (`vehicle_details`)
     LEFT JOIN `rac_details` ON `rac_details`.`vehicle_id`=`vehicle_details`.`id`
     AND `rac_details`.`from_date` NOT BETWEEN $from_timestamp AND $to_timestamp 
     AND `rac_details`.`to_date` NOT BETWEEN $from_timestamp AND $to_timestamp 
     JOIN `owner` ON `owner`.`id`=`vehicle_details`.`owner_id`
 WHERE `vehicle_details`.`model_id` =  '$model_id' ";
通过上述查询,我得到了所有车辆的详细信息。当
内部连接
rac\U详细信息
时,我无法获取新添加的车辆ie,该车辆ie在
rac\U详细信息
中没有记录。 希望有人能帮助我

编辑

例如,我从2月27日到3月3日预订了一张登记号为XX-YY-ZZ的马球票。然后,我需要搜索车辆xx yy zz在那几天是否可用,因为我刚刚在我的rac_详细信息中搜索了我存储预订车辆详细信息的位置。 然后,我们购买了一辆注册号为RR-TT-YY的新车Vento,因此我在我的车辆详细信息表中添加了该车辆,并且在首次预订之前,不会将任何记录添加到rac_详细信息中

如果我写这个查询


当我第一次预订vento时,它不会在列表中显示vento,因为在vento的
rac_details
中没有任何记录我会尝试使用
而不是在已预订的车辆中:

"SELECT `vehicle_details`.*, `owner`.`owner_name`, `owner`.`id` As owner_id, 
`rac_details`.`from_date`, `rac_details`.`to_date`, 
`rac_details`.`vehicle_id`
 FROM (`vehicle_details`)
 JOIN `owner` ON `owner`.`id`=`vehicle_details`.`owner_id`
 WHERE `vehicle_details`.`model_id` =  '$model_id' 
 AND vehicle_details.id NOT IN (
   SELECT rac_details.vehicle_id
   FROM rac_details
   WHERE `rac_details`.`from_date` BETWEEN $from_timestamp AND $to_timestamp 
     AND `rac_details`.`to_date` BETWEEN $from_timestamp AND $to_timestamp
 )"

乍一看,您的SELECT语句似乎非常长且复杂。可以简化吗?任何代码越复杂,调试就越困难。尽可能简化查询,或者选择查询的编写方式可以不同。您确定在预订时已将详细信息保存到rac_详细信息表中吗?rac_详细信息的SELECT查询显示了什么?您需要刷新表格吗?@Borges我只需要获取给定日期范围内可用的车辆列表。我将预订的详细信息保存在表
rac\u details
中。问题在于加入查询。否第一次rac_详细信息表将为空。当车辆被预订时,数据将被添加到此中。@LimZ,您写道:“我只需要获取给定日期范围内可用的车辆列表。我将预订的详细信息保存在rac_details表中。”。所有尚未预订的车辆都可以使用,不是吗?因此,在开始时,内部select将为空,因此NOT IN将为您提供所有车辆ID。仅使用select语句调试代码有点困难。您在什么环境中编写数据库?你能提供一个数据库的例子吗?您是否使用JQuery调用select语句?@Borges和Gavriel请在我的question@LimZ,您是否尝试过此查询?怎么了?错误消息?错误的结果?
"SELECT `vehicle_details`.*, `owner`.`owner_name`, `owner`.`id` As owner_id, 
`rac_details`.`from_date`, `rac_details`.`to_date`, 
`rac_details`.`vehicle_id`
 FROM (`vehicle_details`)
 JOIN `owner` ON `owner`.`id`=`vehicle_details`.`owner_id`
 WHERE `vehicle_details`.`model_id` =  '$model_id' 
 AND vehicle_details.id NOT IN (
   SELECT rac_details.vehicle_id
   FROM rac_details
   WHERE `rac_details`.`from_date` BETWEEN $from_timestamp AND $to_timestamp 
     AND `rac_details`.`to_date` BETWEEN $from_timestamp AND $to_timestamp
 )"