Ir para conteúdo

POWERED BY:

Arquivado

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

regina

[Resolvido] contar produtos comprados e quem comprou

Recommended Posts

Boa tarde,

 

Estou desenvolvendo uma lista de casamento para um cliente, estou na fase de exibição dos produtos para o dono da lista, os noivos.

Em uma tabela eu listo:

DESCRIÇÃO DO PRODUTO ........ QUANTIDADE SOLICITADA ........... QUANTIDADE COMPRADA

Produto 1 ............... 2 ............................... 1

Produto 2 ................ 3 ............................... 3

Produto 3 ................... 2 ............................... 0

Gostaria de exibir na linha de baixo o nome dos convidados que adquiriram o produto mas não estou conseguindo

Minha sql está assim:

$sql="SELECT pedidos.pedido_id,pedidos_produtos.quantidade, clientes.nome
			FROM pedidos 
			INNER JOIN pedidos_produtos ON(pedidos.pedido_id=pedidos_produtos.pedido_id)
			INNER JOIN clientes ON(clientes.cliente=pedidos.cliente)
			WHERE pedidos.lista_presentes='$lista_camento' AND pedidos_produtos.produto_id='$produto'";
$sql=mysql_query($sql) or die(mysql_error());

Mas ele não soma e só traz a quantidade do último pedido daquele produto referente à lista.

 

Resumo:

1 - Preciso somar a quantidade comprada pelos convidados

2 - Exibir os nomes dos convidados que compraram o respectivo produto.

 

Agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use funções agregadoras como sum.

 

Talvez tenha de usar um case para pivotear as linhas em colunas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resumo:

1 - Preciso somar a quantidade comprada pelos convidados

Questão resolvida, utilizei o SUM.

agora ele está trazendo certinho a quantidade dos produtos comprados,

 

2 - Exibir os nomes dos convidados que compraram o respectivo produto.

Agora como eu faço para trazer o nome dos convidados que compraram?

 

Faço outra select?

 

Obrigada Motta

 

Do jeito que eu estou fazendo a nova select (para trazer o nome dos convidados que compraram o presente) ele duplica, mesmo que o convidado X não tenha comprado o Produto 1, seu nome aparece na lista abaixo do Produto 1.

 

SELECT clientes.convidado
FROM clientes
INNER JOIN pedidos ON ( clientes.cliente = pedidos.cliente )
INNER JOIN pedidos_produtos ON ( pedidos_produtos.pedido = pedidos_produtos.pedido )
WHERE pedidos.lista_casamento = '1'
AND pedidos_produtos.produto = '24'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo como :

 

SELECT clientes.convidado , clientes.nome
FROM clientes
INNER JOIN pedidos ON ( clientes.cliente = pedidos.cliente )
INNER JOIN pedidos_produtos ON ( pedidos_produtos.pedido = pedidos_produtos.pedido )
WHERE pedidos.lista_casamento = '1'
AND pedidos_produtos.produto = '24'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta,

 

agradeço novamente pela atenção.

 

Já olhei umas 10 vezes no banco para confirmar, por exemplo:

 

o Produto 11 teve somente um comprador (Jessica)

o Produto 24 teve 2 compradores (Jessica, regina)

 

mas quando listo os nomes aparecem repetidos:

Produto 11

Jessica

regina (aqui não deveria aparecer este nome)

 

Produto 24

Jessica

regina

 

Comecei a reescrever a query desde o princípio e achei o erro:

INNER JOIN pedidos_produtos ON ( pedidos_produtos.pedido = pedidos_produtos.pedido )

em vez de

INNER JOIN pedidos_produtos ON ( pedidos_produtos.pedido = pedidos.pedido )

Não sei explicar a parte teórica ali da "comparação", mas era isso que estava errado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei explicar a parte teórica ali da "comparação", mas era isso que estava errado 

 

Como no 1º caso se comparou uma coluna a ela mesma

pedidos_produtos.pedido = pedidos_produtos.pedido

a resultado é sempre igual, isto gera um produto cartesiano indevido.

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.