Получить последнего пользователя, который только просмотрел сообщение

То, что я пытаюсь сделать здесь, это запрос последнего пользователя, просмотревшего бизнес.

Это бизнес стол


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

Другие вопросы по тегам