Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bcs_ptx

Usando o sum

Recommended Posts

eai pessoal, seguinte, tenho uma tbl_votos com o campo opcao, no campo opcao podem ir 5 tipos de valores, opcao1,opcao2,opcao3,opcao4 e opcao5, ai quero fazer um contador, mas mesmo cadastrando só um campo todos os campos soman, oque estou fazendo errado? abraços.

 

SELECT
sum(opcao) = 'opcao1' as opcao1,
sum(opcao) = 'opcao2' as opcao2
from
tbl_votos;

Compartilhar este post


Link para o post
Compartilhar em outros sites

SUM() você usa para somar e somar número.

 

Se seus valores são strings como apresentado e você quer saber o total de ocorrências, use COUNT().

 

E, tanto quanto eu sei, você não pode fazer esse tipo de comparação antes do FROM. Sendo assim, acredito que deva usar um GROUP BY para agrupar as contagens por seus respectivos valores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, eu sempre fiz assim e sempre deu certo, mas agora esta dando erro por que eu tenho um campo, e no campo eu tenho que somar, exemplo, se tiver 5 registros opcao1 e 2 opcao3, ele teria que separar eles, fiz com o count e me retorna 0 em todos

 

SELECT
COUNT(opcao) = 'opcao1' as opcao1,
COUNT(opcao) = 'opcao2' as opcao2
from
tbl_votos;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu fiz um teste rápido aqui com uma estrutura bem simples só com a chave primária e o campo com o texto da opção e essa query:

 

mysql> SELECT `option`, COUNT( `option` ) FROM `counting` GROUP BY `option`;

Retornou aquilo que eu imaginava e disse que retornaria:

 

+---------+-------------------+
| option  | COUNT( `option` ) |
+---------+-------------------+
| valor 1 |                 2 |
| valor 2 |                 2 |
| valor 3 |                 4 |
+---------+-------------------+
3 rows in set (0.00 sec)

Inseri alguns registros aleatoriamente um número também aleatório de vezes.

 

Resolve seu caso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou ...

 

SELECT
       sum(case when opcao = 'opcao1' then 1 else 0 end) opcao1,
       sum(case when opcao = 'opcao2' then 1 else 0 end) opcao2
from
       tbl_votos;

 

Me parece que temos um problema de modelagem aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas Motta, daí se o sistema dele cresce e passa a ter três, quatro, cinco... cem que seja, ele vai além de ter uma query monstruosa, ser obrigado a sempre alterar a query.

 

Mas quem sou eu pra questionar, o especialista aqui é você ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mas Motta, daí se o sistema dele cresce e passa a ter três, quatro, cinco... cem que seja, ele vai além de ter uma query monstruosa, ser obrigado a sempre alterar a query.

 

Concordo, me parece haver um problema na modelagem, já disse.

 

Thanks pelo especialista... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.