Php 如果没有行匹配,codeiniter中的Group by在计数中返回零

Php 如果没有行匹配,codeiniter中的Group by在计数中返回零,php,sql,codeigniter,Php,Sql,Codeigniter,我希望如果状态2或状态3没有行匹配,则两个状态都将返回零,或者在纯T-SQL中没有匹配的状态将返回零: $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('statu

我希望如果状态2或状态3没有行匹配,则两个状态都将返回零,或者在纯T-SQL中没有匹配的状态将返回零:

$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();
请试试这个

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

这不是我要问的,你可以简单地返回
0
,而不是返回false
$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;   
}