Como somar diferente do dbgrid?

Delphi

11/10/2007

Olá amigos do forum, novamente estou aqui para mais uma dúvida, pois o sistema que estou desenvolvendo esta sendo diferente dos meus trabalhos até agora. Então, a dúvida é!!
tenho um dbgrid onde fica gravado as músicas pedidas pelo ouvinte, em uma consulta eu faço por exemplo em um determinado dia, de uma determinada hora, fico sabendo quais são as músicas pedidas, até ai tudo bem, o problema que estou tendo é, como fazer para juntar vários pedidos em uma linha e mostrar o valor total num campo, exemplo

ele esta assim agora no dbgrid

|Descrição |valor
|Zeze di camargo |1
|Zeze di camargo |1
|Zeze di camargo |1
|Ivete Sangalo |1
|Ivete Sangalo |1
|Gino e geno |1

e gostaria que ficassse assim no dbgrid

|Descrição |valor
|Zeze di camargo |3
|Ivete Sangalo |2
|Gino e geno |1


do jeito que esta agora, o ouvinte pede zeze di camargo entaum no dbgrid aparece essa musica varias vezes, entaum eu gostaria que o sistema pegasse todas essas músicas e mostrasse somente uma vez, e no campo valor mostrasse a quantidade que ela foi pedida, para eu ter uma idéia de quantas vezes esta sendo pedida, ao invez de contar uma por uma. eu criei na tabela de pedido o valor 1, por exemplo, quando se pede a musica ele ja insere no campo vaor da tabela 1, entaum todas as musicas tem o valor 1.

Obrigado a todos e aguardo a ajuda.


Junior-programador

Junior-programador

Curtidas 0

Respostas

Edilcimar

Edilcimar

11/10/2007

crie mais um campo numérico, aí a cada pedido você vai incrementando ele, aí vc tem a somatória de cada um a qualquer momento


GOSTEI 0
Marco Salles

Marco Salles

11/10/2007

Acho que é exemplo clasico de Sql de Agrupamento

So que , deveria cada cantor ter um Id , ficaria bem mais fácil agrupar
com o Id do cantor de que pelo nome dos mesmos....

Quanto ao Underline edicilmar , acho que so o Guinther..... Bem , mandar uma carta para redação para ver se é possivel. Ate o momento acho que não...


GOSTEI 0
Junior-programador

Junior-programador

11/10/2007

ola amigos, bem eu fiz um campo chamado valor na tabela, que ao inserir a musica, o valor dele é inserido 1, ficaria assim
nome - valor
zeze di camargo 1
eu nao posso ir somando esses valores na tabela, por causa das consultas, por exemplo, se eu fizer uma consulta de um determinado horario das 3 as 6, eu quero saber quais as musicas mais pedidas daquele horario, e seria a mesma coisa da data, como o nome sempre sera igual, o sql faria uma comparacao com a desc e juntaria tudo só e somando os valores.

obrigado.


GOSTEI 0
Marco Salles

Marco Salles

11/10/2007

ola amigos, bem eu fiz um campo chamado valor na tabela, que ao inserir a musica, o valor dele é inserido 1, ficaria assim nome - valor zeze di camargo 1


aminha sugestão é que voce divida o problema em tres etapas

[color=darkred:44d37778d1]1)estrutura das tabelas[/color:44d37778d1]
Acho que seria mais interressante voce ter um campo Id_Cantor nesta tabela e em outra tabela com o Nome dos Cantores... Aonde voce teria um relacionamento entre essas duas tabelas .... 


[color=red:44d37778d1]2)Sql de Agrupamento seguido de condição[/color:44d37778d1]
o proximo passo e fazer um Sql que agrupe esses Id sobre uma determinada condição <uma determinada Data entre um Intervalo de Horas>


[color=red:44d37778d1]3)interJoin entre essas tabelas[/color:44d37778d1]
Feito isto , para a apresentar mais amigavelmente fazer um InterJoin, para apresentar ao inves dos id_cantor o Nome dos cantores


nesse proprio site tem vários exemplos de cada uma dessas etapas, e acredito ser uma boa solução

boa Sorte...


GOSTEI 0
Junior-programador

Junior-programador

11/10/2007

Ola amigos do forum, problema resolvido, com a ajuda de um parceito, Adriano, segue abaixo como ficaria

select nomecantor, count(valor)as rank from tbmusica
group by 1
order by rank desc

Funcionou perfeitamente.

Obrigado a todos.


GOSTEI 0
Marco Salles

Marco Salles

11/10/2007

Ola amigos do forum, problema resolvido, com a ajuda de um parceito, Adriano, segue abaixo como ficaria select nomecantor, count(valor)as rank from tbmusica group by 1 order by rank desc


citação antiga de marco salles
Acho que é exemplo clasico de Sql de Agrupamento So que , deveria cada cantor ter um Id , ficaria bem mais fácil agrupar com o Id do cantor de que pelo nome dos mesmos....




exemplo clássico de agrupamento né.. So que esta agrupando por nome
questão de estrutura.... eu particularmente prefiro ter uma tabela so para nome de cantores.. enfim , ...


GOSTEI 0
POSTAR