2015-06-11 79 views
0

我有連接表中的ID計數的查詢。我需要做一個返回的表與數據庫中的另一個表的聯合。在select語句中的Codeigniter佔位符(選擇ID,0作爲佔位符,...)

表從第一查詢返回的有4列:

-group_id 
-count 
-name 
-description 

我想第一個統一的表格有3列:

-group_id 
-name 
-description 

我通過phpmyadmin運行查詢和它的工作完美。查詢:

SELECT group_id, size, name, description 
FROM(SELECT *, count(group_id) as size 
    FROM table1 
    GROUP BY group_id) as tmp 
JOIN table2 
ON tmp.group_id = table2.group_id 
UNION 
SELECT id, 0 as size, name, description 
FROM table2 

但是當我嘗試使用codeigniter進行查詢時,它將無法工作。

Error: Unknown column '0' in 'field list'

SELECT id, 0 as size, name, description 
FROM table2 

下面是從模塊笨代碼:

$this->db->select('group_id, size, name, description'); 
    $this->db->from('(select *, count(group_id) as size from table1 group by group_id) as tmp'); 
    $this->db->join('table2', 'tmp.group_id=table2.id'); 

    $this->db->get(); 

    $query1 = $this->db->last_query(); 

    $this->db->select('id, 0 as size, name, description'); 
    $this->db->from('table2'); 

    $this->db->get(); 
    $query2 = $this->db->last_query(); 

    $this->db->query($query1. ' UNION ' .$query2); 
    $query = $this->db->get(); 
    return $query->result_array(); 

爲了使長話短說,我需要知道如何使佔位符笨或有任何其他更好的方式來獲得我需要的結果是什麼?

回答

0

您必須通過將FALSE值作爲codeigniter的活動記錄select()函數的第二個參數,來逃避select查詢。
所以,應該這樣寫:當您添加FALSE價值,它的第二個參數

$this->db->select('id, 0 as size, name, description',FALSE); 

,笨不會讓被backtick字符查詢初始化的第一個參數。