LISTAR CLIENTES QUE POSSUEM UMA DETERMINADA CATEGO

SICHIN 25/03/2010 20:13:14
#337909
Boa noite, eu tentei fazer, mas não estou consiguindo, então estou pedidindo ajuda de vcs.... (tem que ser em SQL)

Tenho 3 tabelas:
CLIENTES VENDAS PRODUTOS
cli_codigo ven_codigo prd_codigo
cli_nome ven_cliente prd_descricao
ven_produto prd_quant
ven_quantidade

O exercicio pede o seguinte: clientes que compraram produtos da categoria [Ô]A[Ô] ou da categoria [Ô]B[Ô], ordenados por quantidade de produtos comprados (nome do cliente, quantidade de produtos comprados). Observe que o que está sendo solicitado são os clientes que copraram da categoria [Ô]A[Ô] ou [Ô]B[Ô], e a quantidade comprada, ou seja, se o cliente comprou de outras categorias e também das categorias A ou B, então as quantidades das categorias também dever ser consideradas.

Exemplo:
se o cliente X, comprou 10 itens da categoria A, e 20 itens da categoria C tenho que mostrar: Cliente X, 30 itens - se o cliente Y comprou 50 itens da categoria D e G não mostro nada, se o cliente Z comprou 2 itens da categoria A, 3 itens da categoria B e 4 itens da categoria C mostro: Cliente Z, 9 itens

Não sei se consigui ser claro, mas desde de já fico agradecido se alguem souber como faço.
Obrigado!!!
RCMRO 25/03/2010 21:09:54
#337916
Resposta escolhida
Como não tô muito afim de criar massa de dados e está faltando o campo CATEGORIA no seu layout, escrevi um código que se não funcionar, vai ficar bem próximo.

SELECT      Cli.cli_Nome, Ven.prd_Descricao, Ven.Qtd
FROM Clientes Cli
INNER JOIN (SELECT DISTINCT Cli1.Cli_Codigo
FROM Clientes Cli1
INNER JOIN Vendas Ven1
ON Ven1.ven_Cliente = Cli1.Cli_Codigo
INNER JOIN Produtos Prd1
ON Prd1.prd_Produto = Ven1.ven_Produto
WHERE Prd1.prd_Categoria IN([ô]A[ô],[ô]B[ô])) CliCod
ON CliCod.Cli_Codigo = Cli.Cli_codigo
INNER JOIN (SELECT Ven2.ven_Cliente, Ven2.Ven_Produto, prd2.prd_Descricao, SUM(Ven2.ven_Quantidade) AS Qtd
FROM Vendas Ven2
INNER JOIN Produtos Prd2
ON Prd2.prd_Produto = Ven2.ven_Produto
GROUP BY Ven2.ven_Cliente, Ven2.Ven_Produto, prd2.prd_Descricao) Ven
ON Ven.Ven_Cliente = Cli.Cli_codigo
ORDER BY Ven.Qtd, Cli.cli_Nome, Ven.prd_Descricao
SICHIN 25/03/2010 22:15:10
#337923
RCMRO, valeu muito obrigado!!!!
Tópico encerrado , respostas não são mais permitidas