[英]how to write select query using if condition,And condition and where condition in codeigniter
[英]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.