2017-01-06 6 views
1

私は、ここに捕まってしまったクエリが正しいかのように、そのは思えるで作業されていませんが、私はいくつかの異なった結果ここ複数および/または条件は、C

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 'OR'条件の周りに括弧を必要としています。 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; 
     } 

私はこれは私がCodeIgniterののorwhere機能付き期待どおりの結果を得るdidnotので、私は私のCodeIgniterのプロジェクトでアクティブなレコードでorwhere条件を実装する方法であるため、上記のコードが動作すると思います。それがうまくいかない場合は、以下の問題にコメントしてください。

+0

私はすぐに通知します – sradha

+0

コードに小さな変更がありますが、私はちょうどtrueを返しますが、$ query-> result ) –

関連する問題