Jump to content
Fórum Script Brasil
  • 0

Problemas com GROUP BY


Julim

Question

Bom dia foristas,

Estou com um pequeno problema ao executar um select com group by. O select busca registros de três tabelas diferentes para montar os dados numa tabela comum. Os registros são apresentados da seguinte forma:

ID PROJETO PRODUTO 1 PRODUTO 2 PRODUTO 3 VALOR TOTAL

12 teste 20 1200.00

12 teste 30 1200.00

Como pode se observar, quando faço o select, tenho IDs iguais devido a estrutura das tabelas e o modo como são gravados os dados. Quando uso o GROUP BY id, para agrupar os registros de IDs iguais, o select só me traz o primeiro registro deste ID.

Eu preciso que o resultado venha assim:

ID PROJETO PRODUTO 1 PRODUTO 2 PRODUTO 3 VALOR TOTAL

12 teste 20 30 1200.00

O select é o apresentado abaixo:

SELECT c1.*, c1.id_projeto, DATE_FORMAT(c1.data_cad,'%d/%m/%Y') AS cadastro, DATE_FORMAT(c1.data_atualizacao,'%d/%m/%Y') AS atualizacao, DATE_FORMAT(c1.data_cad,'%d/%m/%Y') AS previsao_fechamento, c2.id_projeto, c2.id_produto, c2.quantidade, c3.id_produto, c3.titulo AS produto, c4.*, c5.id_profissional, c5.p_nome AS profissional, c6.id_revenda, c6.r_razao_social AS revenda
FROM tb_projeto c1
LEFT JOIN tb_projeto_item c2 ON (c1.id_projeto=c2.id_projeto)
LEFT JOIN tb_produto c3 ON (c3.id_produto=c2.id_produto)
LEFT JOIN tb_cliente c4 ON (c4.id_cliente=c1.id_cliente)
LEFT JOIN tb_profissional c5 ON (c5.id_profissional=c1.id_profissional)
LEFT JOIN tb_revenda c6 ON (c6.id_revenda=c1.id_revenda)
GROUP BY c1.id_projeto
ORDER BY c1.id_projeto DESC

Agradeço de coração qualquer ajuda.

Edited by Julim
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Julim,

Você pode utilizar esta sentença SQL e fazer o tratamento da seguinte forma:

Fiz um exemplo estático. Da uma olhada!

$arrProduto = array(
    array('ID' => 12,'PROJETO' => 'teste' , 'PRODUTO' => 20, 'VALORTOTAL' => 1200),
    array('ID' => 12,'PROJETO' => 'teste' , 'PRODUTO' => 30, 'VALORTOTAL' => 1200),
);

$arrProdutosOrganizados = array();

foreach($arrProduto as $produto) {
    $arrProdutosOrganizados[$produto['ID']]['ID'] = $produto['ID'];
    $arrProdutosOrganizados[$produto['ID']]['PROJETO'] = $produto['PROJETO'];
    $arrProdutosOrganizados[$produto['ID']]['PRODUTOS'][] = $produto['PRODUTO'];
    $arrProdutosOrganizados[$produto['ID']]['VALORTOTAL'] += $produto['VALORTOTAL'];
}


echo '<table border="1">';
//Impressão do projeto
foreach($arrProdutosOrganizados as $produtoOrganizado) {
    echo "<tr><td>{$produtoOrganizado['ID']}</td><td>{$produtoOrganizado['PROJETO']}</td>";
    
    //Impressão dos produtos
    foreach($produtoOrganizado['PRODUTOS'] as $produtoItem) {
        echo "<td>$produtoItem</td>";
    }
    echo "<td>{$produtoOrganizado['VALORTOTAL']}</td></tr>";
}
echo '</table>';

Link to comment
Share on other sites

  • 0
Julim,

Você pode utilizar esta sentença SQL e fazer o tratamento da seguinte forma:

Fiz um exemplo estático. Da uma olhada!

Olá Romero!

Muito obrigado pela ajuda, era isso mesmo que eu precisava, mas não sabia exatamente como fazer.

Muito obrigado mesmo!

Grande abraço,

Julio

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...