boa noite galera...
seguinte, consegui fritar mais da metade dos meus neuronios, que ja n eram muitos...
estou com um pepino
estou desenvolvendo um sistema que é o sguinte
tabelas:
clientes (id, nome)
pedidos (id, cliente, valor)
faturamentos (id, pedido, quantidade)
dpedidos (id, cliente)
dfaturamentos (id, pedido, quantidade, valor)
preciso fazer um ranking de clientes
ou seja
exibir em ordem de maior valor os clientes... quem vendeu mais no caso.
SUM((faturamentos.quantidade * pedidos.valor) + (dfaturamentos.quantidade + dfaturamentos.valor))
algo +- assim.
mas n sei fazer query... ja tentei fazer de diversos modos, mas n consigo.
teria que sair assim
cliente QUANTIDADE VALOR
1º NOME QUANTIDADE VALOR
mas n consigo fazer a ordenaçao, com duas querys, consultando cada coisa eu consigo fazer a soma, mas n consigo ordenar.
alguem tem alguma ideia ?
Ranking De Clientes Por Ordem De Valor
Started By sowrever, 25/08/2010, 21:04
5 replies to this topic
#1
Posted 25/08/2010, 21:04
msn: mathe@diretoriow.com.br
icq: n lembro
e-mail: mathe@diretoriow.com.br
#2
Posted 25/08/2010, 21:17
Faça uma view que tenha uma query do tipo:
Depois, pra mostrar o seu ranking, você faz:
SELECT P.cliente, P.valor, F.quantidade qtd FROM pedidos P INNER JOIN faturamentos F ON F.pedido=P.id UNION SELECT DP.cliente, DF.quantidade, DF.valor FROM dpedidos DP INNER JOIN dfaturamentos DF ON DP.id=DF.pedido
Depois, pra mostrar o seu ranking, você faz:
SELECT C.nome, SUM(R.qtd) quantidade, SUM(R.qtd*R.valor) valortotal FROM ranking R INNER JOIN clientes C ON R.cliente=C.id GROUP BY C.nome ORDER BY valortotal DESC
#3
Posted 25/08/2010, 22:02
cara ja tentei por inner join e por union.
a que deu menos errado foi por union.
n tenho uma tabela chamada ranking, é no calculo mesmo...
essa sua do join ficou bem diferente da minha, poderias comentar ela ?
a que deu menos errado foi por union.
n tenho uma tabela chamada ranking, é no calculo mesmo...
essa sua do join ficou bem diferente da minha, poderias comentar ela ?
msn: mathe@diretoriow.com.br
icq: n lembro
e-mail: mathe@diretoriow.com.br
#4
Posted 25/08/2010, 22:39
Ranking é a view que você vai criar. Leia o link que coloquei.
#5
Posted 26/08/2010, 10:13
eu li... mas n compreendi corretamente...
sem join, a alguma forma de fazer ?
sem join, a alguma forma de fazer ?
msn: mathe@diretoriow.com.br
icq: n lembro
e-mail: mathe@diretoriow.com.br
#6
Posted 26/08/2010, 10:24
Nem sem join, nem sem union. Primeiro você precisa organizar as informações de modo que possa trabalhar com elas. Pra isso o primeiro select. Você vai ter, de uma vez só, o código do cliente, a quantidade e o valor. Depois, em um segundo select, você processa essas informações, somando as coisas. Precisa fazer uma view porque acho que com subquery não funciona. Mas a idéia do que estou sugerindo é:
SELECT c.nome,
SUM(r.qtd) quantidade,
SUM(r.qtd * r.valor) valortotal
FROM (SELECT p.cliente,
p.valor,
f.quantidade qtd
FROM pedidos p
INNER JOIN faturamentos f
ON f.pedido = p.id
UNION
SELECT dp.cliente,
df.quantidade,
df.valor
FROM dpedidos dp
INNER JOIN dfaturamentos df
ON dp.id = df.pedido) r
INNER JOIN clientes c
ON r.cliente = c.id
GROUP BY c.nome
ORDER BY valortotal DESC
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)










