Получить последнего пользователя, который только просмотрел сообщение
То, что я пытаюсь сделать здесь, это запрос последнего пользователя, просмотревшего бизнес.
Это бизнес стол
id | имя пользователя | бизнес имя | city_id ----------------------------------.......
Это обзорная таблица
id | бисид | имя пользователя | содержание ----------------------------------......
Код работает нормально, но в конце я понял, что 10 пользователей просматривают один бизнес, и моя домашняя страница посвящена этому бизнесу.
EX: Допустим, у меня есть три дела на моем сайте. MC Donald', Джимми Джонс из KFC
Я хочу показать, что последний пользователь просматривал этот бизнес.
Я хочу, чтобы это было похоже на:
Майк рассмотрел MC Дональд
Стив рассмотрел Джимми Джонс
Дэйв рассмотрел KFC
Вместо:
Майк рассмотрел MC Дональд Джейс рассмотрел MC Дональд Анна рассмотрел MC Дональд Джон рассмотрел MC Дональд Хосе рассмотрел MC Дональд Стив рассмотрел Джимми Джонс Дэйв рассмотрел KFC
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;
}
}
2 ответа
Оператор 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;
}
Попробуйте выбрать DISTINCT bisid при запросе таблицы отзывов
РЕДАКТИРОВАТЬ: Вот пример http://www.w3schools.com/sql/sql_distinct.asp