2013-09-30 99 views
0

轉換MySQL查詢到笨查詢轉換MySQL查詢在笨查詢

當前查詢:


$query = "SELECT a.*, b.cost AS future_cost, b.start_date AS future_date 
      FROM (
      SELECT * FROM (
       SELECT * FROM outbound_routes 
       ORDER BY start_date 
      ) x 
      GROUP BY pattern 
     ) a 
      LEFT JOIN (
      SELECT * FROM outbound_routes 
      ORDER BY start_date 
     ) b 
      ON a.pattern = b.pattern AND a.id != b.id 
      GROUP BY a.pattern"; 

$result=$this->db->query($query); 

粗體查詢我要追加搜索變量像

$this->db->where('pattern','1'); 

任何幫助和想法,將不勝感激。

+0

我不認爲你可以加入使用活動記錄類兩個SQL查詢。你將不得不使用'$ this-> db-query('ALL YOUR SQL HERE')方法。 – Jeemusu

回答

0

不幸的是,我不認爲有可能使用codeigniters active record class將where子句附加到現有的SQL中。活動記錄類只能處理表之間的簡單連接。

要將它追加到您現有的查詢中,您可以使用查詢綁定將變量傳遞給查詢。

$query = "SELECT a.*, b.cost AS future_cost, b.start_date AS future_date 
      FROM (
      SELECT * FROM (
       SELECT * FROM outbound_routes 
       ORDER BY start_date 
      ) x 
      GROUP BY pattern 
     ) a 
      LEFT JOIN (
      SELECT * FROM outbound_routes 
      ORDER BY start_date 
     ) b 
      ON a.pattern = b.pattern AND a.id != b.id 
      GROUP BY a.pattern 
      WHERE pattern = ?"; 

$result = $this->db->query($query, array(1)); 
0

試試這個

$this->db->select('select a.*, b.cost AS future_cost, b.start_date AS future_date'); 
$this->db->from('(select * from (select * from outbound_routes order by start_date) x group by pattern) a'); 
$this->db->join('(select * from outbound_routes order by start_date) b', 'a.pattern = b.pattern and a.id != b.id','left '); 
$this->db->where('a.pattern','1'); 
$this->db->group_by("a.pattern"); 
$result=$query = $this->db->get(); 

Active Record

或看到CodeIgniter Subqueries