【问题标题】:convert mysql query in codeigniter query在codeigniter查询中转换mysql查询
【发布时间】:2013-09-30 06:16:08
【问题描述】:

将mysql查询转换为codeigniter查询

当前查询:


$query = "SELECT a.*, b.cost AS future_cost, b.start_date AS future_date
          FROM (
            SELECT * FROM (
              SELECT * FROM outbound_routes 
              ORDER BY start_date
            ) x 
          GROUP BY pattern
          ) a
          LEFT JOIN (
            SELECT * FROM outbound_routes 
            ORDER BY start_date
          ) b 
          ON a.pattern = b.pattern AND a.id != b.id
          GROUP BY a.pattern";

$result=$this->db->query($query);

在粗体查询中,我想附加搜索变量,例如

 $this->db->where('pattern','1');

我们将不胜感激任何帮助和想法。

【问题讨论】:

  • 我认为您不能使用活动记录类来连接两个 SQL 查询。您必须使用$this->db-query('ALL YOUR SQL HERE') 方法。

标签: php mysql sql codeigniter


【解决方案1】:

试试这个

$this->db->select('select a.*, b.cost AS future_cost, b.start_date AS future_date');
$this->db->from('(select * from   (select * from outbound_routes order by start_date) x group by pattern) a');
$this->db->join('(select * from outbound_routes order by start_date) b', 'a.pattern = b.pattern and a.id != b.id','left ');
$this->db->where('a.pattern','1');
$this->db->group_by("a.pattern"); 
$result=$query = $this->db->get();

Active Record

或查看CodeIgniter Subqueries

【讨论】:

    【解决方案2】:

    不幸的是,我认为不可能使用 codeigniters active record class 将 where 子句附加到现有 SQL 中。活动记录类只能处理表之间的简单连接。

    要将其附加到现有查询,您可以使用查询绑定将变量传递给查询。

    $query = "SELECT a.*, b.cost AS future_cost, b.start_date AS future_date
              FROM (
                SELECT * FROM (
                  SELECT * FROM outbound_routes 
                  ORDER BY start_date
                ) x 
              GROUP BY pattern
              ) a
              LEFT JOIN (
                SELECT * FROM outbound_routes 
                ORDER BY start_date
              ) b 
              ON a.pattern = b.pattern AND a.id != b.id
              GROUP BY a.pattern
              WHERE pattern = ?";
    
    $result = $this->db->query($query, array(1));
    

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      相关资源
      最近更新 更多