COUNT / GROUP BY с активной записью?

У меня есть таблица со следующей информацией:

id  |  user_id  |  points
--------------------------
1   |  12       |  48
2   |  15       |  36
3   |  18       |  22
4   |  12       |  28
5   |  15       |  59
6   |  12       |  31

etc.

Я хочу первую десятку (массив) с наибольшим количеством записей на user_id (в порядке убывания). Итак, используя приведенную выше таблицу, мне нужен следующий массив взамен:

  • 12 => 3 строки
  • 15 => 2 строки
  • 18 => 1 строка
  • и т. Д.

Как я могу сделать это с помощью CodeIgniter, используя метод запроса активной записи? Можно ли это сделать с помощью COUNT и GROUP BY user_id?

24
задан trejder 30 June 2015 в 07:30
поделиться

3 ответа

Хотя это поздний ответ, я бы сказал, что это поможет вам ...

$query = $this->db
              ->select('user_id, count(user_id) AS num_of_time')
              ->group_by('user_id')
              ->order_by('num_of_time', 'desc')
              ->get('tablename', 10);
print_r($query->result());
9
ответ дан 28 November 2019 в 22:14
поделиться

Я думаю, вы должны посчитать результаты с помощью FOUND_ROWS () и SQL_CALC_FOUND_ROWS . Вам понадобятся два запроса: select, group_by и т. Д. Вы добавите плюс и выберите: SQL_CALC_FOUND_ROWS user_id. После этого запроса выполните запрос: SELECT FOUND_ROWS(). Это вернет желаемый номер.

2
ответ дан 28 November 2019 в 22:14
поделиться

Этот код считает строки с диапазоном дат:

Контроллер:

$this->load->model("YourModelName");
$data ['query'] = $this->YourModelName->get_report();

Модель:

  public function get_report()
     {   
       $query = $this->db->query("SELECT  *
FROM   reservation WHERE arvdate <= '2016-7-20' AND  dptrdate >= '2016-10-25' ");
       return $query;
     }

где «arvdate» и «dptrdate» - это две даты в базе данных, а 'booking' - это имя таблицы.

Просмотр:

<?php
 echo $query->num_rows();
?>

Этот код должен возвращать количество строк. Чтобы вернуть данные таблицы, используйте

$query->rows();
return $row->table_column_name;
1
ответ дан 28 November 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: