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

Problemas com GROUP BY


Julim

Pergunta

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.

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

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 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
      652k
×
×
  • Criar Novo...