【问题标题】:codeigniter active record nested querycodeigniter 活动记录嵌套查询
【发布时间】:2013-03-29 13:14:20
【问题描述】:

我在将下面的 MySQL 代码转换为 Codeigniter 活动记录查询时遇到问题。

SELECT sss.*, c.country_name, c.country_code 
  FROM ( SELECT gr.* 
           FROM (`be_goldrate` as `gr`) 
          WHERE `gr`.`country_id` != 0 
            AND `gr`.`rate_type` = 'calculated' 
           ORDER BY gr.date DESC ) as sss 
   LEFT JOIN `be_countries` as `c` 
     ON `c`.`country_id`=`sss`.`country_id`  
   GROUP BY `sss`.`country_id`

我已经按照here 的建议进行了尝试,但没有成功。

【问题讨论】:

  • 你得到什么错误?
  • 您可能想要创建一个 sql 视图: SELECT gr.* FROM (be_goldrate as gr) WHERE gr.country_id != 0 AND gr.@987654329 @ = '计算' ORDER BY gr.date DESC ) ?提高性能?
  • @joelharkes 不是获取最新的 be_goldreate 数据
  • CodeIgniter 本身不支持子查询。如果你愿意,你可以试试我的子查询库,它应该让你做你想做的事。 github.com/NTICompass/CodeIgniter-Subqueries
  • CI 3.0 将支持子查询(或“分组”)。

标签: mysql codeigniter activerecord


【解决方案1】:

你只需要检查Codeigniter Documentation

     $this->db->select('sss.*, c.country_name, c.country_code ');
       $this->db->from('(SELECT gr.* 
       FROM (`be_goldrate` as `gr`) 
      WHERE `gr`.`country_id` != 0 
        AND `gr`.`rate_type` = "calculated" 
       ORDER BY gr.date DESC) as sss');
       $this->db->join('be_countries as c','c.country_id = sss.country_id','left');

       $this->db->group_by('sss.country_id'); 

如有错误请报告

【讨论】:

  • 您应该将() 放在from 中的子查询周围。
猜你喜欢
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多