Добавление нескольких счетчиков в группе по запросу с использованием codeigniter - PullRequest
0 голосов
/ 13 марта 2019

Мой стол выглядит так:

| id | employee_id |   status  |
   1      2           Present
   2      2           Present
   3      2           Absent
   4      2           Holiday

вот мой запрос:

    $this->db->select('employee_id,COUNT(*) as num_present',FALSE);
    $this->db->group_by('employee_id'); 
    $this->db->group_by('status'); 
    $query  =  $this->db->get('xin_payroll_temp'); 
    $data = $query->result();

    print json_encode($data);

Вывод запроса:

  {
    "employee_id": "2",
    "num_present": "2"
  },
  {
    "employee_id": "2",
    "num_present": "1"
  },
  {
    "employee_id": "2",
    "num_present": "1"
  }

Мой запрос подсчитывает Present, Absent, Holiday, но проблема в том, что он отображается в отдельных данных массива.

Я хочу отобразить его в одном массиве в следующем формате:

{
 "employee_id": "2",
 "num_present": "2",
 "num_absent" : "1",
 "num_holiday" : "1"
}

Любая помощь будет принята с благодарностью. Благодаря.

1 Ответ

1 голос
/ 13 марта 2019

После долгого поиска в гугле я наконец решил проблему. Вот запрос, который я использовал для получения нужного мне формата:

        $query = $this->db->select('employee_id, sum(case when status = "Present" then 1 else 0 end ) As present_count, sum(case when status = "Absent" then 1 else 0 end ) As absent_count, sum(case when status = "Holiday" then 1 else 0 end ) As holiday_count',FALSE)
          ->from("xin_payroll_temp")
           ->group_by('employee_id')
           ->get();

    $data = $query->result();

    print json_encode($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...