首页 > 解决方案 > 如何在 CodeIgniter 3 中转换此查询

问题描述

我从以下网址获得了这段片段:http ://sqlfiddle.com/#!9/a9ec7e/4/0

它的作用是从表中获取所有数据,所有重复的行都将计为 1,最后只获取 ID/Item 的最新数据。

SELECT
        p.*
    FROM
        (
          -- For every product_id, find maximum created_at time
          SELECT
              product_id, max(created_at) AS created_at
          FROM 
              purchases
          GROUP BY
              product_id
         ) AS mx 
         -- JOIN to the whole table
         JOIN purchases p ON
              mx.product_id = p.product_id AND mx.created_at = p.created_at
    ORDER BY
         product_id ;

这是上面片段的结果图片。结果图片(图片):
结果图片(图片)

真正的问题是,我怎样才能使它与 CodeIgniter3 查询一起工作?或者如何在 CodeIgniter3 中进行此查询。

我尝试使用$this->db->query(); 但没有运气。这是我使用上面的片段并更改了表名和列的图像。我的拍摄结果(图片):
我的拍摄结果(图片)

标签: phpmysqlcodeignitercodeigniter-3

解决方案


试试这个 :

$query = $this->db->query("SELECT p.* FROM (SELECT product_id, max(created_at) AS created_at FROM purchases GROUP BYproduct_id) AS mx 
     JOIN purchases p ON mx.product_id = p.product_id AND mx.created_at = p.created_at ORDER BY product_id");

return $query->result();

希望这有帮助


推荐阅读