Ir para conteúdo

POWERED BY:

Arquivado

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

Cesão

SELECT COUNT apenas de ids diferentes

Recommended Posts

Olá amigos,

 

Meu DB eh Access e minha tabela de pedidos possui os seguintes campos:

 

numero_pedido (id)

id_cliente (id do cliente)

cod_item (id do item)

quantidade (unidades do produto pedido)

dta (data do pedido)

 

Estou com o seguinte problema: eu estou fazendo o Select Count para que apareça na minha tela o numero de pedidos que cada cliente fez:

 

SQL = "Select TOP 5 id_cliente, tot_pedido From (Select id_cliente, count(numero_pedido) As tot_pedido From Pedidos Group By id_cliente) Order By tot_pedido Desc, id_cliente"Set rsPedHdr = conexao.Execute(SQL)

mas o problema eh o seguinte.. cada vez que vou fazer um pedido, posso fazer um pedido de VARIOS produtos ao mesmo tempo.. entao para cada produto ele cria um registro diferente, mas com o mesmo numero de pedido.. vamos dizer que pedi 3 cigarros, 2 pães e 20 fosforos.. ficaria assim os registros:

(estou mostrando de acordo com os campos ja citados)

 

4018 | 22 | 31 | 3 | 26/6/2007 14:50:30

4018 | 22 | 32 | 2 | 26/6/2007 14:50:30

4018 | 22 | 33 | 20 | 26/6/2007 14:50:30

 

o problema eh que na hora que aparece meu resultado, aparece como se eu tivesse feito 3 pedidos, sendo que na verdade fiz apenas um com 3 produtos diferentes no mesmo pedido.. Gostaria de saber se existe como fazer um COUNT apenas dos numeros diferentes..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o DISTINCT

 

 

SQL = "Select TOP 5 id_cliente, tot_pedido From (Select id_cliente, count(DISTINCT numero_pedido) As tot_pedido From Pedidos Group By id_cliente) Order By tot_pedido Desc, id_cliente"Set rsPedHdr = conexao.Execute(SQL)

Compartilhar este post


Link para o post
Compartilhar em outros sites

hummm, ja vi esse DISTINCT aki no forum, mas nao sabia para que servia.. mas não funcionou para mim não.. usei do jeito que você me mostrou e ele deu erro de sintaxe... testei ateh assim:count DISTINCT(numero_pedido) e mesmo assim, nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cesão, Você pode escrever seu Select da seguinte forma:

       SELECT TOP 5 [table1].id_cliente, count(1) as tot_pedido        FROM [sELECT DISTINCT table1.id_cliente, numero_pedido FROM table1]. as [table1]        GROUP BY [table1].id_cliente        ORDER BY Count(1) DESC, [table1].id_cliente;          

falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

jonathan, coloquei do jeito que você falou

 

SQL = "Select TOP 5 id_cliente, tot_pedido From (Select distinct count(numero_pedido) As tot_pedido, id_cliente From Pedidos Group By id_cliente) Order By tot_pedido Desc, id_cliente"Set rsPedHdr = conexao.Execute(SQL)

mas mesmo assim ele ainda continua contando como se fossem 3 pedidos e nao 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae IC, funcionou perfeitamente cara!! valew mesmo!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, movido p Access???hum, deve ter mto a ver mesmo <_< eu IA reutilizar esse topico p tirar a MESMA DUVIDA, soh que sobre outro SQL, mas ateh desencanei.

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.