我有一个计算连接表中 id 的查询。我需要将返回的表与数据库中的另一个表进行并集。
第一个查询返回的表有 4 列:
- group_id
- 计数
- 姓名
- 描述
我想要与第一个表合并的表有 3 列:
- group_id
- 姓名
- 描述
我通过 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
这是模块中的 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 制作占位符,或者是否有其他更好的方法来获得我需要的结果?
最佳答案
您必须通过添加 FALSE
值作为 codeigniter 事件记录 select()
函数的第二个参数来转义 select
查询。
所以,应该这样写:
$this->db->select('id, 0 as size, name, description',FALSE);
当您将 FALSE
值添加到其第二个参数时,codeigniter 不会将第一个参数保留为查询中的 backtick
字符初始化。
关于php - 使用 Codeigniter 的 ActiveRecord 语法构建包含 UNION 和子查询的 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30793180/