Contar o número de linhas em cada grupo
-
06-07-2019 - |
Pergunta
Usando classe Active Record do CodeIgniter e MySQL, eu tenho uma tabela de mensagens com user_id
e vários outros campos, e eu quero contar quantas mensagens de cada usuário fez. Eu poderia obter registros onde user_id = $whatever
e contar o número de resultados, mas eu teria que passar por cada user_id
e usar essa consulta count_all_results()
mais e mais para cada um.
Deve haver uma maneira melhor! Se todos os campos só tinha um campo com um 1
nele, eu poderia select_sum
-se que o campo e obter uma contagem. Mas isso parece bobo.
Muito obrigado antecipadamente!
Solução
Usando o registro ativo deve ser:
$this->db->select('field1, ... ,fieldn, count(1) as number_elements_of_row');
$this->db->group_by(array('field_group_1', ... ,'field_group_n'));
$result = $this->db->get('mytable');
para $result
terá o que você precisa!
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow