Array
(
)

citar os 10 produtos mais constados

Aspirante
   - 14 mar 2006

Pessoal, eu tenho uma tabela chamada HISTORICO. Quando eu vou vender pro cliente usa-se a tabela VENDAS. Por exemplo, o cliente chegou, o nome dele é JOSÉ e ele irá comprar 5 produtos.

inicia-se um cadastro na tabela VENDAS, que puxará o nome do cliente, os dados de valor final, etc. Só que como ele pode comprar vários produtos, eu precisei criar outra tabela, a histórico, que vai armazenando os produtos que ele quer, e pra se identificar depois, copia o campo CODVENDA da tabela VENDAS para o campo CODVENDA da tabela HISTÓRICO. esse foi meu plano, deu tudo certo, quando vou imprimir, sai tudo certo, tudo relacionado certinho.

agora que descrevi as tabelas tenho um problema.



PROBLEMA REAL:

me pediram pra mim implementar os produtos mais vendidos. então terei que fazer uma busca na tabela HISTÓRICO dos produtos que mais aparecem (poderia buscar pelo código que mais aparece). a tabela seria assim:

18 - XXX
18 - XXX
1 - MMM
18 - XXX
15 - OOO
14 - UUU
14 - UUU
18 - XXX
15 - OOO
18 - XXX

contando o produto que mais foi vendido (ou seja, o que mais consta está na tabela HISTÓRICO) é o produto de código 18. O próximo seria o 14 e assim por diante, até chegar ao 10° produto mais vendido. então, nesse form teria que mostrar os 10 produtos mais vendidos, seria assim a lista:

18 - XXX
14 - UUU
15 - 000
e assim até chegar no 10°.

galera, como eu poderia fazer essa contagem e filtrar tudo isso? como poderia fazer para ele contar os que mais consta na tabela histórico e colocar em ordem nos 10 mais vendidos no DbGrid?

agradeço muito se alguém puder me ajudar.


Emerson
   - 14 mar 2006

(sempre que puder, informe o banco de dados utilizado, sua versão, os componentes que usa para acesso à esse banco de dados e qual a versão do delphi)

#Código

select top 10
CodProduto, Sum(Quantidade)
from
Historico
group by
CodProduto
order by
CodProduto

a instrução acima funciona no SQL Server.
para o Firebird, troque TOP 10 por FIRST 10.

para MySQL:
#Código
select
CodProduto, Sum(Quantidade)
from
Historico
group by
CodProduto
order by
CodProduto limit 10