Codeigniter 在哪里并替换子查询

问题描述 投票:0回答:2

如何在活动记录中的 codeigniter 中写入以下查询?

SELECT
  time AS date,
  user AS name
FROM b_table
WHERE id IN(SELECT
          a
        FROM a_table
        WHERE group = $group
        AND tag >= '$date1'
        AND tag <= $date2')

这是我的想法,但它不起作用。

$this->db->select('a');
$this->db->from('a_table');
$this->db->where('group',$group);
$this->db->where('tag>=',$date1);
$this->db->where('tag<=',$date2);

$subQuery = $this->db->_compile_select();
$this->db->_reset_select();

$this->db->select('time AS date, user AS name');
$this->db->from('b_table');
$this->db->where_in($subQuery);

我的问题是(a)从选择一个是需要替换的记录,例如将空格替换为逗号,或者也许我错了:(,
另一个我使用 str_replace 但仍然错误,

样本数据 选择一个中的 a 是
222,111,444
333,444

555,666
替换为 222,111,444,333,444,555,666

即使我是 codeigniter 的新手 感谢任何帮助,并对我的英语感到抱歉。
谢谢。

php codeigniter activerecord subquery where-clause
2个回答
1
投票

试试这个:

 ->where() 

支持向其传递任何字符串,它将在查询中使用它。

所以上面的内容会是这样的:

 $this->db->select('time AS date,user AS name')->from('b_table');
 $this->db->where_not_in('id', "SELECT a FROM a_table WHERE group = $group AND tag >= '$date1' AND tag <= $date2");

希望能有所帮助!


0
投票

您使用此方法的方式错误。 where 中的标签后必须有一个空格

$this->db->where('tag >=',$date1);
$this->db->where('tag <=',$date2);
© www.soinside.com 2019 - 2024. All rights reserved.