【问题标题】:Codeigniter where in and replace SubqueryCodeigniter 在哪里并替换子查询
【发布时间】:2013-03-19 08:34:33
【问题描述】:

如何在活动记录中的 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 但还是错了,

样本数据 从选择一个是
222,111,444
333,444

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

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

【问题讨论】:

    标签: codeigniter activerecord subquery where-clause


    【解决方案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");
    

    希望它会有所帮助!

    【讨论】:

    • 我可以再提问:) 如何使它成为 csv 的下载按钮。因为可以使用许多数据进行查看..我是 codeigniter 的新手,所以请你为此编写代码:)
    • @AhmanHida 我认为这是完全不同的问题,有关此问题的更多信息,请参阅此链接stackoverflow.com/questions/5634592/…
    • @sandip 谢谢,但是对于我的子查询需要替换空间,例如,如果我使用手动查询,选择日期 01-01-2013 并获取一些行,如果我将其复制并粘贴到where_in 手动我得到一个空格,它应该是一个逗号(这个空格使我的查询不起作用),如何更改它?谢谢
    • @AhmanHida 我没有得到你想说的!请重新解释
    • 对不起我的英语不好,我的第一个选择(如果手动)从 01-01-2013 到 10-01-2013 获取索引
    【解决方案2】:

    您以错误的方式使用它。 where 标签后面必须有空格

    $this->db->where('tag >=',$date1);
    $this->db->where('tag <=',$date2);
    

    【讨论】:

      猜你喜欢
      • 2017-03-23
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 2019-05-22
      • 2014-09-22
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多