我在这里要做的是查询最后一位用户查看过的商家。
这是商家表
id |用户名|商业名称| city_id ----------------------------------.......
这是评论表
id | bisid |用户名|内容 ----------------------------------......
代码工作正常,但最后我意识到有10个用户审核了一项业务,那么我的主页就是关于该业务的。
EX: 假设我的网站上有三个业务。 MC唐纳德,吉米约翰斯肯德基
我想显示上次审核该商家的用户。
我希望它像:
迈克回顾了MC唐纳德史蒂夫评论吉米约翰斯
戴夫评论肯德基
而不是:
迈克回顾了MC唐纳德 Jaycee回顾了MC唐纳德 安娜回顾了MC唐纳德 约翰评论了MC唐纳德 何塞评论了MC唐纳德 史蒂夫回顾了吉米约翰斯 戴夫评论肯德基 Class Local extends CI_controller {
public function city() {
$data['reviews'] = $this->reviews->get_city_reviews($city->id,10,0);
$this->load->view('local/index',$data);
}
}
模型
Class Reviews extends MY_model {
public function get_city_reviews($city_id,$limit,$offset)
{
$list = array();
$this->db->select('review.*');
$this->db->from('review');
$this->db->join('biz','biz.id = review.bizid');
$this->db->where('biz.city_id',$city_id);
$this->db->order_by('review.created_at','desc');
$this->db->limit($limit,$offset);
$query = $this->db->get();
foreach($query->result() as $row)
{
$list[] = $row;
}
return $list;
}
}
答案 0 :(得分:1)
GROUP BY语句与聚合函数结合使用,可以按一列或多列对结果集进行分组。
public function get_city_reviews($city_id,$limit,$offset)
{
$list = array();
$this->db->from('review');
$this->db->join('biz','biz.id = review.bizid');
$this->db->where('biz.city_id',$city_id);
$this->db->order_by('review.created_at','desc');
$this->db->limit($limit,$offset);
$this->db->group_by('bizid');
$query = $this->db->get();
foreach($query->result() as $row)
{
$list[] = $row;
}
return $list;
}
答案 1 :(得分:0)
在查询评论表时尝试选择DISTINCT bisid