codeigniter活动记录聚合不起作用

时间:2017-06-21 10:09:25

标签: codeigniter activerecord codeigniter-3

我正在使用Codeigniter,我想要做的是返回连接表(item_gallery)的查询gallery_id是最低值。而主要查询按项目post_date的desc命令

以下代码group_by选择item_gallery gallery_id的随机值。但我想要item_gallery gallery_id的最低值。

  public function shopItems($id) {

    $this->db->select("*,MIN(item_gallery.gallery_id)");
    $this->db->from('items');
    $this->db->join('item_gallery', 'items.id = item_gallery.item_id', 'left');
    $this->db->where('items.user_id', $id);     
    $this->db->order_by('items.post_date', 'Desc');
    $this->db->group_by("item_gallery.item_id");
    $query = $this->db->get();
    return $query->result();
}

数据库结构

项目表

|    id    |  slug  |  user_id  |  post_date |

|    12    |  test  |    111    |  12/5/2017 |

项目图库

| gallery_id |  item_id  |     image     | 

|     121    |    12     |  profile.png  |   -- i want this record selected
|     122    |    12     |  gallery.png  | 

1 个答案:

答案 0 :(得分:0)

你是否在连接条件内尝试了MIN内部查询?

    $this->db->select("*,MIN(item_gallery.gallery_id)");
    $this->db->from('items');
    $this->db->join('item_gallery', 'items.id = ( SELECT MIN(item_gallery.gallery_id) id FROM item_gallery WHERE items.id = item_gallery.item_id )', 'left');
    $this->db->where('items.user_id', $id);
    $this->db->order_by('items.post_date', 'Desc');
    $this->db->group_by("item_gallery.item_id");
    $query = $this->db->get();