Группировка по codeiniter возвращает ноль в счетчике, если нет совпадения строк - PullRequest
0 голосов
/ 22 января 2020
$this->db->select('COUNT(status) as status_count, status');
    $this->db->where('u_id', $u_id);
    $this->db->where_in('status', ['2', '3']);
    $this->db->group_by('status');
    $q = $this->db->get('retail_lead');

    return $q->result();

я хочу, если ни одна строка не соответствует статусу 2 или статусу 3, ноль будет возвращаться для обоих или для не соответствующего статуса

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Пожалуйста, попробуйте это.

$this->db->select('COUNT(status) as status_count, status');
$this->db->where('u_id', $u_id);
$this->db->where_in('status', ['2', '3']);
$this->db->group_by('status');
$q = $this->db->get('retail_lead');

if($q->num_rows() > 0){
    return $q->result_array();
} else {
    return 0;   
}
0 голосов
/ 22 января 2020

В чистом Т- SQL это будет:

WITH STATUSES AS (
  SELECT 2 AS Status
  UNION ALL
  SELECT 3),
COUNTS AS (
  SELECT COUNT(1) as status_count, status
  FROM MYTABLE
  GROUP BY status
  WHERE u_id = @u_id
)

SELECT S.Status, ISNULL(C.status_count, 0) AS status_count
FROM STATUSES AS S
LEFT JOIN COUNTS C
  ON S.Status = C.status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...