Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS

Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

mostrar resultado de consulta agrupado por valores

07-10-2008 14:37

Ola, estou com dúvidas, talvez seja mais lógica e nem tanto programação, vou explicar.

Tenho um banco de dados, onde ficam gravadas as compras efetuadas em um estabelecimento. No começo do mês as pessoas vem fazer o pagamento (sim, todos compram fiado!).

quero gerar um relatorio que mostre qtos itens de cada produtos esta pessoa comprou, agrupado por produtos. a tabela esta da seguinte forma

id_lancamento - id_venda - id_cliente - id_produto - qtd_produto - vl_total - hora
1 52 147 221 1 15.50 2008-09-17 13:00:00
2 52 147 253 1 25.50 2008-09-17 13:00:00
3 57 192 274 1 35.50 2008-09-17 13:00:00
4 57 192 274 1 35.50 2008-09-17 13:00:00
5 52 147 274 1 35.50 2008-09-17 13:00:00
6 59 192 274 1 35.50 2008-09-17 13:00:00
7 61 147 221 1 15.50 2008-09-17 13:00:00

veja que o cliente '147' fez duas compras, a id_venda "52" e "61" e nesta "61" ele comprou o produto "221" que tbm foi comprado na venda "52".

eu preciso gerar o relatório da seguinte maneira.

CLIENTE TAL (147) - Período xx/xx/xxxx - xx/xx/xxxx Total: 999,99
PRODUTO - QTD - VALOR TOTAL
221 2 31,00
253 1 25,50
274 1 35,50


nesta tabelas estão todas as vendas, tenho que selecionar as vendas do "cliente_id" no período entre "hora" ate ai consegui
id_cliente, data_inicio e data_fim são passados via post.

mysql_query("SELECT * FROM vendas WHERE id_cliente='$id_cliente' AND hora BETWEEN '$data_inicio 00:00:01' AND '$data_fim 23:59:59' ORDER BY hora ASC");

Mas como agrupar este resultado pelos produtos?
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17235
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

mostrar resultado de consulta agrupado por valores

07-10-2008 14:52

Passa essa tabela para poder fazer uns testes aqui

Essa dúvida tem relação com MySQL

MOVIDO: de PHP para MYSQL
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

mostrar resultado de consulta agrupado por valores

07-10-2008 15:35


-- -- Estrutura da tabela `vendas_lanc` --   CREATE TABLE IF NOT EXISTS `vendas_lanc` (   `id_lancamento` INT(11) NOT NULL AUTO_INCREMENT,   `id_venda` INT(11) NOT NULL,   `id_cliente` INT(11) NOT NULL,   `id_produto` INT(11) NOT NULL,   `qtd_produto` INT(11) NOT NULL,   `vl_total` DECIMAL(9,2) NOT NULL,   `hora` datetime NOT NULL,   `usuario` INT(11) NOT NULL,   PRIMARY KEY  (`id_lancamento`) ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;   -- -- Extraindo dados da tabela `vendas_lanc` --   INSERT INTO `vendas_lanc` (`id_lancamento`, `id_venda`, `id_cliente`, `id_produto`, `qtd_produto`, `vl_total`, `hora`, `usuario`) VALUES (1, 1, 105, 2, 1, 13.00, '2008-09-17 13:01:29', 0), (2, 3, 105, 5, 2, 720.00, '2008-09-17 13:22:40', 0), (4, 6, 110, 4, 4, 6.00, '2008-10-02 14:31:50', 0), (5, 7, 109, 4, 5, 7.50, '2008-10-02 14:33:45', 0), (6, 7, 109, 3, 3, 4.95, '2008-10-02 14:33:48', 0), (7, 9, 105, 4, 5, 7.50, '2008-10-06 23:52:11', 0), (8, 9, 105, 4, 2, 3.00, '2008-10-06 23:52:19', 0), (9, 9, 105, 4, 8, 12.00, '2008-10-06 23:52:54', 0), (10, 9, 105, 1, 34, 2318.12, '2008-10-06 23:53:04', 0);  

0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17235
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

mostrar resultado de consulta agrupado por valores

07-10-2008 15:47

Veja se essa base ajuda

<?php $conexao = mysql_connect("localhost", "login", "senha") or die(mysql_error()); $db = mysql_select_db("bd"); ?> <table> <tr> <td>prod</td> <td>qtd</td> <td>valor total</td> </tr> <?php $selec = "SELECT DISTINCT id_venda, COUNT(id_venda) AS total, SUM(vl_total) AS soma FROM vendas_lanc GROUP BY id_venda"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); ?> <?php while($campos=mysql_fetch_array($exec)) { extract($campos); echo "<tr>"; echo "<td>$id_venda</td><td>$total</td><td>$soma</td>"; echo "</tr>"; } ?> </table>

0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

mostrar resultado de consulta agrupado por valores

07-10-2008 16:12

Quase, gerou este resultado

prod....qtd.......valor total
1..........1.......13.00
3..........1.......720.00
6..........1.......6.00
7..........2.......12.45
9..........4.......2340.62

mas se for ver, so tem o produtos com id 1,2,3,4 e 5. e o Produto 4 foi vendido 24x

acho que a lógica é esta, mas deve estar calculando nos campos errados. eu preciso agrupado por PRODUTO, e somado qtos produtos foram vendidos.
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17235
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

mostrar resultado de consulta agrupado por valores

07-10-2008 16:22

No exemplo que postei usei como base: id_venda, porque não sei qual sua base ai, por isso o DISTINCT foi feito sobre esse campo. Se não for, refaça usando com base o outro campo, ai se retornar erro só falar.
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

mostrar resultado de consulta agrupado por valores

07-10-2008 17:38

Nossa, fiz vários testes, troquei vários nomes de campo e consegui. ficou assim

 <table>     <tr>     <td>prod</td>     <td>qtd</td>     <td>valor total</td>     </tr>     <?php     $selec = "SELECT DISTINCT id_produto, SUM(vl_total) AS soma, SUM(qtd_produto) AS total FROM vendas_lanc GROUP BY id_produto";     $exec = mysql_query($selec) or die(mysql_error());     while($campos=mysql_fetch_array($exec)) {     extract($campos);     echo "<tr>";     echo "<td>$id_produto</td><td>$total</td><td>$soma</td>";     echo "</tr>";     }     ?>     </table>

Usei a lógica da sua consulta, só mudei os campos e usei duas somas, uma pra saber qtos vezes o mesmo produto foi vendido e outra pra saber o valor total. Ficou muito bom.

Valeu mesmo
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17235
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

mostrar resultado de consulta agrupado por valores

07-10-2008 17:50

Boa :smile
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado