selectign语句中的Codeigniter占位符(选择id,0作为占位符,...)

时间:2015-06-11 23:37:08

标签: php mysql database codeigniter union

我有查询在连接表中计算ID。我需要将返回的表与数据库中的另一个表联合起来。

从第一个查询返回的表有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进行查询时,它将无法正常工作。

  

错误:“字段列表”中的未知列“0”

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

以下是模块中的codeigniter代码:

    $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();

为了简化故事,我需要知道如何使用codeigniter制作占位符,还是有其他更好的方法来获得我需要的结果?

1 个答案:

答案 0 :(得分:0)

您必须通过添加select值作为codeigniter的有效记录FALSE功能的第二个参数来转义select()查询。
所以,它应该写成:

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

当您将FALSE值添加到其第二个参数时,codeigniter将不会将backtick字符初始化的第一个参数保留到查询中。