簡體   English   中英

如何針對這種情況編寫查詢

[英]How to write query for this condition

我正在為旅行社做一個項目。 我要去3張桌子

  • vehicle_details ,我存儲所有車輛詳細信息
  • rac_details預定車輛的詳細信息
  • owner車主的詳細信息

在預訂時,我需要搜索rac_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' ";

通過以上查詢,我可以獲得所有車輛詳細信息。 inner join rac_details時,我無法獲得新添加的載具,即在rac_details沒有記錄的rac_details 希望有人能幫助我

編輯

例如,我從2月27日至3月3日預訂了編號為XX-YY-ZZ的Polo車,那么我需要搜索那一天是否有車輛xx-yy-zz,因為我只是在rac_details中搜索了我存儲預訂的車輛詳細信息。 然后,我們購買了新車Vento,注冊編號為RR-TT-YY,所以我在我的vehicle_details表中添加了該車輛,並且在第一次預訂之前不會在rac_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`) 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' "; 

當我第一次預訂vento時,它不會在列表中顯示vento,因為rac_details沒有關於vento的記錄

我會用NOT IN在已經預訂的車輛中嘗試:

"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
 )"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM