Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Joabe Pinheiro

Agrupando resultados do banco de dados

Recommended Posts

Bom dia pessoal,

 

tenho uma tabela de clientes e gostaria de agrupar o resultado por estados e cidades conforme imagem, minha logica esta um pouco fraca ainda, não sei como resolver essa questão, gostaria da ajuda da comunidade.

 

vlw,

 

Imagem de exemplo

7a0f82cb91.png

 

Tabela de clientes

4743ed3358.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utiliza-se para agrupamento de resultados a cláusula GROUP BY do Mysql.

:seta: http://dev.mysql.com/doc/refman/4.1/pt/group-by-hidden-fields.html

 

Uma maneira mais fácil, porém com leve perda de performance, é utilizando um loop para listar as cidades/estados, e internamente, um loop para listar o que corresponde à cidade em questão.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utiliza-se para agrupamento de resultados a cláusula GROUP BY do Mysql.

:seta: http://dev.mysql.com...den-fields.html

 

Uma maneira mais fácil, porém com leve perda de performance, é utilizando um loop para listar as cidades/estados, e internamente, um loop para listar o que corresponde à cidade em questão.

 

[]'s

 

Matheus Tavares

 

obrigado pela resposta, mais ainda estou com um pouco de dificultade para montar a esrutura, teria como você montar um pequeno exemplo na pratica de como seria o loop?

 

desde já agradeço pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara pelo que eu entendi é isso que você quer.

qualquer coisa da um grito ai.


<?php
$sql = "select * from bl_clientes group by(cliente_estado)";
$result = mysql_query($sql);
if($result){
	if(mysql_num_rows($result)>0){
		?>
			<table border="1">
			<tr>
				<th>cliente</th><th>Estado</th>
			</tr>
		<?php
		while($row = mysql_fetch_array($result)){
			?>
				<tr>
					<td><?=$row['cliente_nome']?></td>
					<td><?=$row['cliente_estado']?></td>
				</tr>
			<?php
		}
	}else{
		echo "consulta retornou vazia!";
	}
}else{
	$echo "problemas na execução de consulta!";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Daniel,

 

na realidade não é extamente isso que eu quero. Eu preciso listar meus clientes porem separando por estados,exemplo aparece o titulo Bahia, dai exibe todos os clientes da Bahia, depois São Paulo e exibe todos os clientes de São Paulo...semelhante a imagem postada. Esse exemplo que você deu eu consegui fazer aqui, porem eu nao quero repetir a opção estados.

 

Desde já agradeço pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

então você quer ordenar por estado e não agrupar.

 

seguindo as dicas do @gremio10

 

utilize order by

ordenando primeiro por estado e depois por nome do cliente

order by `estado`,`nome_cliente`

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal acho que nao estou conseguindo passar minha ideia para vocês. Eu tenho uma tabela de clientes, listar os clientes e ordenar pelo estado é moleza, a dificuldade é o seguinte, dependendo da quantidade de clientes e do estados de cada um, eu quero listalos agrupados por estado, sem a necessidade de fazer nada manual, ao tempo que for existindo cadastro de clientes que seja de um determinado estado eles vão aparcendo na lista. Exemplo:

 

Bahia

João

Maria

Antonio

José

São Paulo

Igor

João Pedro

Pereira

Rio de Janeiro

Rio de Janeiro

Zé Antonio

Lucia

 

Achei um exemplo similar na net, acho que pode ajuda-los a entender.

 

<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>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Joab Pinheiro, conseguiu resolver sua questão? Também estou tentando resolver uma igual, onde minha tabela tem

 

id

titulo

endereço

bairro

cidade

uf

 

eu quero fazer uma listagem por Uf (Estado) e em cada estado aparecer as cidades correspondentes, não estou conseguindo se alguem puder me dar um Help.,

 

 

 

 

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que vc precisa é isso! tenta ai e me fala

<?php
include ('conect.php');
$query_recNoticias = "select *,cast(abertura_data_us as DATE) as data, assunto from view_chamados order by id_chamado DESC LIMIT 0,30";
$recNoticias = mysql_query($query_recNoticias) or die(mysql_error());

 $exibedata = "";
 // início do laço 
 while ($row = mysql_fetch_array($recNoticias)){
	if ($exibedata==$row['data']){
		echo "<tr><td>".$row['assunto']."-".$row['uo']."</td></tr>";	
	}
	else if(exibedata==""){
		echo "<b>".$row['data']."</b><br>";
		$exibedata=$row['data'];
		echo "<table><tr><td>".$row['assunto']."-".$row['uo']."</td></tr>";	
	}
	else{
		echo "</table>";
		echo "<b>".$row['data']."</b><br>";
		echo "<table><tr><td>".$row['assunto']."-".$row['uo']."</td></tr>";	
		$exibedata=$row['data'];
	}
}	
 ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.