Ir para conteúdo
Fórum Script Brasil
  • 0

(RESOLVIDO) Ajuda com relatório MYSQLI+PHP (estou quebrando a cabeça faz uns 4 meses)


rcamu1

Pergunta

Tenho essa consulta que fiz em php e mysqli onde ela soma a quantidade de itens vendidos no período informado e soma a quantidade de itens comprado.

Essa soma está fazendo certinho só que duplica o item na tela (conforme imagem anexa).

Estou quebrando a cabeça faz uns 4 meses e já tentei de tudo que conheço e também o que achei na net mas não consigo unificar as informações do produto na mesma linha.

O erro está na consulta ou na montagem do relatório na tela?

Se alguém conseguir me ajudar agradeço muito.

Minha consulta está assim:

SELECT DISTINCT TMP.*
FROM        (
                SELECT      DISTINCT d.cat_id   AS prod
                        ,   p.id
                        ,   p.nome              AS id_prod
                        ,   SUM(d.qtd)          AS qtd_prod
                        ,   SUM(d.valor_total)  AS total_prod
                        ,   SUM(0)              AS qtd_estoque
                FROM        lc_controle c
                INNER JOIN  lc_detalhe  d ON d.controle_id  = c.id
                INNER JOIN  lc_cat      p ON p.id           = d.cat_id
                WHERE       d.tipo      = '0'
                        AND c.dtConcat  BETWEEN '$dtinicial' AND '$dtfinal'
                        AND c.exportado = 'Sim'
                GROUP BY    d.cat_id
                UNION
                SELECT    DISTINCT d.cat_id   AS prod
                        ,   p.id
                        ,   p.nome              AS id_prod
                        ,   SUM(0)              AS qtd_prod
                        ,   SUM(0)              AS total_prod
                        ,   SUM(d.qtd)          AS qtd_estoque
                FROM        lc_controle c
                INNER JOIN  lc_detalhe  d ON d.controle_id  = c.id
                INNER JOIN  lc_cat      p ON p.id           = d.cat_id
                WHERE       d.tipo      = '1'
                        AND c.dtConcat  < '$dtfinal'
                        AND c.exportado = 'Sim'
                GROUP BY    d.cat_id
            ) TMP

           ORDER BY    TMP.qtd_prod DESC

E a montagem na tela está assim:

 

 <table width="100%" border="1" cellpadding="1" cellspacing="0" class="display" id="example" align="center">
            <thead>
        <tr class="fonte_titulos">
   <th  bgcolor="#77baea">Produto</th>
   <th  bgcolor="#77baea">Quantidade Vendida</th>
   <th  bgcolor="#77baea">Quantidade Estoque</th>
   <th  bgcolor="#77baea">Valor Total</th>

    </thead>
    <tbody>
    <?php
        while ($dados = mysqli_fetch_array($sel))
        {
if (($c % 2) == 1){ $fundo="#E0F2F7"; }else{ $fundo="#A9E2F3"; }
        $id_prod = $dados["id_prod"];
        $qtd_prod = $dados ["qtd_prod"];
        $qtd_estoque = $dados ["qtd_estoque"];
        $total_prod = number_format($dados['total_prod'], 2, ',', '.');
        echo "<tr bgcolor =\"$fundo\" class=\"fonte_desc\"><td align=\"center\" width=\"590\">
$id_prod</td><td align='center'>$qtd_prod"."</td><td align='center'>$qtd_estoque"."</td><td align='center'>R$ $total_prod
        ";
    $c++;   }
        ?>
</table>

abc4.png

Editado por rcamu1
resolvido
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Em 29/10/2018 em 14:40, rcamu1 disse:

O erro está na consulta ou na montagem do relatório na tela?

Na consulta, tenta assim?

SELECT prod, id, id_prod, SUM(qtd_prod), SUM(total_prod), SUM(qtd_estoque)
FROM
(
    SELECT d.cat_id   AS prod
            ,   p.id
            ,   p.nome              AS id_prod
            ,   SUM(d.qtd)          AS qtd_prod
            ,   SUM(d.valor_total)  AS total_prod
            ,   0            AS qtd_estoque
    FROM        lc_controle c
    INNER JOIN  lc_detalhe  d ON d.controle_id  = c.id
    INNER JOIN  lc_cat      p ON p.id           = d.cat_id
    WHERE       d.tipo      = '0'
            AND c.dtConcat  BETWEEN '$dtinicial' AND '$dtfinal'
            AND c.exportado = 'Sim'
    GROUP BY    d.cat_id
    UNION
    SELECT d.cat_id   AS prod
            ,   p.id
            ,   p.nome              AS id_prod
            ,   0              AS qtd_prod
            ,   0             AS total_prod
            ,   SUM(d.qtd)          AS qtd_estoque
    FROM        lc_controle c
    INNER JOIN  lc_detalhe  d ON d.controle_id  = c.id
    INNER JOIN  lc_cat      p ON p.id           = d.cat_id
    WHERE       d.tipo      = '1'
            AND c.dtConcat  < '$dtfinal'
            AND c.exportado = 'Sim'
    GROUP BY    d.cat_id
) TMP
GROUP BY prod
ORDER BY qtd_prod DESC

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...