2017-01-06 21 views
1

我被困在這裏,它好像查詢是正確的工作,但我得到一些不同的結果多個和/或條件不詞

SELECT `car_id`, `pickup_date`, `pickup_time`, `drop_date`, `drop_time`, `booking_status`, `pickup_seconds`, `drop_seconds` 
FROM `car_booking` 
WHERE `pickup_seconds` BETWEEN 1484516700 AND 1484606100 
OR `drop_seconds` BETWEEN 1484516700 AND 1484606100 
AND `car_id` = '14782' 
AND `ride_status` != 'completed' 
AND `booking_status` != 'rejected' 

在這裏我得到的汽車,但其car_id不是14782,在這個id(14782)中沒有車,我收到了其他車的詳細信息。下面

是我的代碼

$this->db->select("car_id , pickup_date ,pickup_time ,drop_date ,drop_time,booking_status,pickup_seconds,drop_seconds"); 

     $this->db->or_where("pickup_seconds BETWEEN $ps AND $ds"); 
     $this->db->or_where("drop_seconds BETWEEN $ps AND $ds"); 
     $this->db->where('car_id' , "14782"); 
     $query1 = $this->db->get_where("car_booking", array("ride_status !="=>"completed","booking_status !="=>"cancelled","booking_status !="=>"rejected")); 

任何一個可以建議我?

謝謝。

+0

查詢不看起來是正確的,你需要周圍的2'或'條件括號。不知道如何在CodeIgniter中做到這一點,雖然... – jeroen

+0

我也感覺相同@jeroen – sradha

回答

1

由於Codeigniter 3.0可以使用group_start()和group_end()。在查詢分組here

您的例子更多信息看起來是這樣的:

$query = $this->db ->select("car_id , pickup_date ,pickup_time ,drop_date ,drop_time,booking_status,pickup_seconds,drop_seconds"); 

         ->where('car_id' , '14782') 
         ->where('ride_status !=' , 'completed') 
         ->where('booking_status !=', 'rejected') 
         ->group_start() 
          ->where("pickup_seconds BETWEEN $ps AND $ds") 
          ->or_where("drop_seconds BETWEEN $ps AND $ds") 
         ->group_end() 
         ->get('car_booking'); 
return ($query->num_rows()) ?$query->result():false; 
+0

Thanx,它爲我工作.. – sradha

1
$where = "(pickup_seconds BETWEEN '.$ps.' AND '.$ds.' or drop_seconds BETWEEN '.$ps' AND '.$ds.')"; 

$query = $this 
     ->db 
     ->select("car_id , pickup_date ,pickup_time ,drop_date,drop_time,booking_status,pickup_seconds,drop_seconds") 
     ->from('car_booking') 
     ->where($where) 
     ->where('car_id' , "14782") 
     ->where('ride_status !=' , "completed") 
     ->where('booking_status !=',"rejected") 
     ->get(); 


     if($query->num_rows()>0) 
     { 
      return $query->result();   } 
     else { 
      return null; 
     } 

我覺得上面的代碼工作,因爲這是我是如何實現在活動記錄orwhere條件我笨項目,因爲我因此未得到預期的使用CodeIgniter的orwhere作用的結果。如果它不起作用,請評論下面的問題。

+0

好吧,我會盡快通知你 – sradha

+0

有一個小小的變化,我只返回true,但記得要返回$ query-> result( ) –