Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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á!
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'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'
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
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.
Muito obrigada MOTTA
Tópico resolvido com a sua ajuda ;)
Use funções agregadoras como sum.
Talvez tenha de usar um case para pivotear as linhas em colunas.