【问题标题】:How to convert this query in CodeIgniter 3 [closed]如何在 CodeIgniter 3 中转换此查询 [关闭]
【发布时间】:2020-10-22 18:28:22
【问题描述】:

我从http://sqlfiddle.com/#!9/a9ec7e/4/0得到了这个sn-p

它的作用是从表中获取所有数据,所有重复的行都将计为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 ;

这是上面 sn-p 的结果图片。 结果图片(图片):

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

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

【问题讨论】:

  • 请不要使用您的代码或错误消息的屏幕截图,也不要链接到外部资源。屏幕截图很难在移动设备上阅读,无法搜索,我们也无法复制、粘贴和运行图像,链接可能会过时。代码应作为文本包含在问题本身中。有关这方面的更多信息,请在提问时看到Why may I not upload images of code SO?

标签: php mysql codeigniter codeigniter-3


【解决方案1】:

试试这个:

$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();

希望这有帮助

【讨论】:

  • 您好,先生,它成功了!哈哈。我只是将 result_array() 更改为 result() '因为我希望它成为一个对象。非常感谢。
  • urwel 先生,解决了。
猜你喜欢
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 2019-01-08
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
相关资源
最近更新 更多