我有查询在连接表中计算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制作占位符,还是有其他更好的方法来获得我需要的结果?
答案 0 :(得分:0)
您必须通过添加select
值作为codeigniter的有效记录FALSE
功能的第二个参数来转义select()
查询。
所以,它应该写成:
$this->db->select('id, 0 as size, name, description',FALSE);
当您将FALSE
值添加到其第二个参数时,codeigniter将不会将backtick
字符初始化的第一个参数保留到查询中。