Ir para conteúdo

POWERED BY:

Arquivado

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

Guh Costa

GROUP BY com vários vampos

Recommended Posts

Bom dia Galera.

 

Estou tentando fazer um filtro onde o usuário seleciona as colunas que quer visualizar.

Estou populando vários listsbox em AJAX com os dados que estão no banco MySQL. Porém estou encontrando dificuldades na hora de agrupar os dados das colunas (pois algumas existem valores todos iguais, e outras valores diferentes).

Exemplo da minha tabela com apenas algumas colunas (a tabela inteira tem mais de 30 colunas):

ID TIPO CIDADE ESTADO VALOR

1 Público Campinas SP 30

1 Público São Carlos SP 10

1 Público São José SP 5

1 Público Campinas SP 100

1 Público Santo André SP 50

1 Público Santo André SP 15

 

Se eu fizer SELECT ID, TIPO, CIDADE, ESTADO, SUM(VALOR) FROM tabela WHERE ID = 1 GROUP BY CIDADE, ESTADO, TIPO, o meu listsbox de estado, por exemplo, fica com SP repetido.

 

Será que devo fazer um select para cada coluna? (Isso dá certo, porém o código fica horrível e o tempo de execução pior ainda).

 

Agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Group by deve ter a agrupamento listado no select.

 

SELECT ID, TIPO, CIDADE, ESTADO, SUM(VALOR) 
FROM tabela 
WHERE ID = 1 
GROUP BY ID, CIDADE, ESTADO, TIPO

 

mas resta saber pelo que você quer agrupar e somar, tenha cuidado também pois

 

"santo andré " <> "santo andré"

"santo andre" <> "santo andré"

 

e por aí afora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Group by deve ter a agrupamento listado no select.

 

SELECT ID, TIPO, CIDADE, ESTADO, SUM(VALOR) 
FROM tabela 
WHERE ID = 1 
GROUP BY ID, CIDADE, ESTADO, TIPO

 

mas resta saber pelo que você quer agrupar e somar, tenha cuidado também pois

 

"santo andré " <> "santo andré"

"santo andre" <> "santo andré"

 

e por aí afora.

 

Obrigado pela resposta Motta.

 

Mas basicamente é isso que você escreveu que estou fazendo.

Porém as opções EM COMUM do meu listbox ficam repetidas:

ID CIDADE UF TIPO

1 Campinas SP Publico

1 São Carlos SP Publico

1 São José SP Publico

1 Santo Andre SP Publico

 

Ou seja, o usuário seleciona a cidade Santo Andre, mas ao selecionar o tipo, terão vários "publicos". Eu gostaria que agrupasse também pelo tipo, independente da cidade. Para isso, eu fiz um select para cada (um agrupando por CIDADE, e outro agrupando por TIPO) e o resultado ficou perfeito. Porém, se tiver que fazer isso para todas colunas, o meu código ficará uma "gambiarra".

 

O que eu queria saber, é se existe uma forma de eu fazer esses GROUP BY independente, sem ter que fazer uma nova query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi bem o problema mas talvez a opção rollup resolva a questão.

 

Talvez você tenha de tratar o retorno de alguma forma, mas terá os diversos totalizadores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi bem o problema mas talvez a opção rollup resolva a questão.

 

Talvez você tenha de tratar o retorno de alguma forma, mas terá os diversos totalizadores.

 

Obrigado, irei dar uma olhada.

 

Então o meu problema é um pouco complexo mesmo.

Eu achei que estava vacilando na query.

 

Abraços

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.