regina 0 Denunciar post Postado Maio 25, 2012 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
Motta 645 Denunciar post Postado Maio 25, 2012 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
regina 0 Denunciar post Postado Maio 25, 2012 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
Motta 645 Denunciar post Postado Maio 25, 2012 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
regina 0 Denunciar post Postado Maio 26, 2012 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
Motta 645 Denunciar post Postado Maio 26, 2012 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
regina 0 Denunciar post Postado Maio 26, 2012 Muito obrigada MOTTA Tópico resolvido com a sua ajuda ;) Compartilhar este post Link para o post Compartilhar em outros sites