Paginação com Php e Mysql com Group By

24/01/2018

0

Olá..
Boa noite ...



Estou tentando fazer uma consulta com grop by e limit, porém não consigo fazer a consulta funcionar.

Tenho uma tabela com 6 campos (nome, endereço, cidade, estado, nivel, data) e essa tabela tem 200.000 linhas.

estou tentando fazer uma consulta onde apareçam os nomes por estado.

Ex.:

Estado Nome endereço cidade estado nivel

Ac Aramis teste Rio Branco AC 3

Ac Paulo teste Rio Branco AC 3

Ac Tais teste Rio Branco AC 3

Sp Joao teste Sorocaba SP 3

Sp Marcio teste São Paulo SP 3

...



Fiz assim :

SELECT * FROM nometabela WHERE nivel = '3' GROUP BY estado ORDER BY estado ASC limit $inicio, $quantidade



Ele faz a listagem e agrupa por estado mas não faz a paginação.

Fiz desta forma :



$sql = "SELECT * FROM nomeRef WHERE nivel = '3' GROUP BY estado ORDER BY estado ASC";
$query = mysql_query($sql) or die(mysql_error());



while($Linha = mysql_fetch_array($query)) {

$sqlest = "SELECT * FROM nomeRef WHERE estado = '$Linha[estado]' AND nivel = '3' ORDER BY nome ASC LIMIT $inicio, $quantidade";
$queryest = mysql_query($sqlest) or die(mysql_error());

while($Linhaest = mysql_fetch_array($queryest)) {

Listagem ...

}



Assim lista todos os nomes cadastrados na tabela, agrupados por estado.

Ex.: Estado de SP -> todos os nomes de são paulo; estado de SC -> todos os nomes de SC ...



Mas não consegui fazer a paginação, ele imprime todos na mesma página.

O problema é que tenho que fazer a paginação, pois são muitos dados, são mais de 200 mil linhas.

Tenho que imprimir 1000 linhas por página.


Alguem pode me ajudar ????



Obrigado
Aramis Serafim

Aramis Serafim

Responder

Posts

02/03/2018

Rob2014

Você precisa utilizar o GROUP BY?<br />
<br />
Me parece que apenas utilizando o ORDER BY resolverá.<br />
<br />
Quando você utiliza o group by ele agrupa em um único registro as informações de um estado na sua query.<br />
<br />
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar