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

(Resolvido) Agrupar resultados em uma consulta


dinohills

Pergunta

Boa tarde, estou montando uma agenda basica em php, com cadastro de Empresa e Contato na Empresa, então minha tabela no mysql está assim:

CREATE TABLE IF NOT EXISTS `empresa` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(100) DEFAULT NULL,
  `telefone` varchar(15) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4;

CREATE TABLE IF NOT EXISTS `contato_empresa` (
  `id_empresa` int(11) DEFAULT NULL,
  `nome` varchar(100) DEFAULT NULL,
  `telefone` varchar(15) DEFAULT NULL,
  KEY `id_empresa` (`id_empresa`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `contato_empresa`
  ADD CONSTRAINT `contato_empresa_ibfk_1` FOREIGN KEY (`id_empresa`) REFERENCES `empresa` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
To usano FK para amarrar o contato da empresa em outra tabela do mysql, assim no cadastro eu posso inserir quantos contatos eu quiser. Questão é quando eu vou listar os dados da tabela "contato_empresa", eu to usando esta consulta:
SELECT empresa.*, contato_empresa.* 
FROM empresa 
left join contato_empresa on contato_empresa.id_empresa = empresa.id

Ele funciona mas ai no caso ele duplica o nome das empresa pra cada contato. EX:

empresa1 tem 3 contatos então fica

empresa1

contato1

empresa1

contato2

empresa1

contato3

O que eu gostaria é agrupar estes contatos na empresa pra ficar assim:

empresa1

contato1

contato2

contato3

Eu acho que pra fazer este agrupamento eu teria que montar no PHP e não na consulta do mysql.

Bom caso alguém saiba de algo posta ai e se caso precisar de mais informações de como to montando a listagem so postar também.

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

2 respostass a esta questão

Posts Recomendados

  • 0

Simples, faça uma consulta para listar as empresas, liste as empresas através de um for, e dentro desse for, para cada empresa, faça uma consulta listando todos os contatos daquela empresa.

Acredito que isso resolva seu problema.

Link para o comentário
Compartilhar em outros sites

  • 0
Simples, faça uma consulta para listar as empresas, liste as empresas através de um for, e dentro desse for, para cada empresa, faça uma consulta listando todos os contatos daquela empresa.

Acredito que isso resolva seu problema.

Aew cara vlw pela dica me ajudo a ter umas ideia de como fazer e deu certo :P :P :P vo coloca o código aqui.

Negocio é que invés de usa for eu usei while fico do jeito que eu queria. valeu !!!!!!

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>

        <?php
        include 'conexao_banco.php';
        $query = "SELECT * FROM empresa";
        $resultado = mysql_query($query, $conecta);
        while ($linha = mysql_fetch_array($resultado)) {
        ?>
            <fieldset>
                <legend>Grupo</legend>
                <fieldset>
                    <legend><b>Empresa</b></legend>
                    Nome
                    <input type="text" readonly value="<?php echo $linha['1'] ?>"><br/>
                    Telefone
                    <input type="text" readonly value="<?php echo $linha['2'] ?>">
                </fieldset>
            <?php
            $query2 = "SELECT empresa.*, contato_empresa.* FROM empresa left join contato_empresa on contato_empresa.id_empresa = empresa.id where id = $linha[0]";
            $resultado2 = mysql_query($query2, $conecta);

            $conta_sql = "SELECT COUNT(*) AS 'num' FROM contato_empresa where id_empresa = $linha[0]";
            $conta_query = mysql_query($conta_sql, $conecta);

            $conta = mysql_fetch_array($conta_query);
            $total_conta = $conta['num'];

            $a = 0;
            while ($a != $total_conta) {
                $linha2 = mysql_fetch_array($resultado2);
                if ($linha2['4'] == '') {
                    
                } else {
            ?>
                    <fieldset>
                        <legend><b>Contato</b></legend>
                        Nome
                        <input type="text" readonly value="<?php echo $linha2['4'] ?>"><br/>
                        Telefone
                        <input type="text" readonly value="<?php echo $linha2['5'] ?>">
                    </fieldset>
            <?php
                }
                $a++;
            }
            ?>
        </fieldset>
        <br />
        <?php
        }
        ?>
        <a href="index.php">Início</a>
    </body>
</html>

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...