• 0
Sign in to follow this  
Aramis Rosa Serafim

Paginação Group By e Limit

Question

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.

 

alguém pode me ajudar ????

 

Obrigado

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Olá ...

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.

 

Podem me ajudar ???

 

Obrigado.

Edited by Aramis Rosa Serafim

Share this post


Link to post
Share on other sites
  • 0

Modifique esta linha

SELECT * FROM nomeRef WHERE estado = '$Linha[estado]' AND nivel = '3' ORDER BY nome ASC LIMIT $inicio, $quantidade

para 

SELECT SQL_CALC_FOUND_ROWS DISTINCT * FROM nomeRef WHERE estado = '$Linha[estado]' AND nivel = '3' ORDER BY nome ASC LIMIT $inicio, $quantidade

Usando 

SELECT FOUND_ROWS() AS total

para retornar o total de linhas.

Com este total de linhas você pode calcular a quantidade de páginas e desenvolver sua lógica de paginação

Share this post


Link to post
Share on other sites
  • 0
2 horas atrás, Denis Courcy disse:

Modifique esta linha

SELECT * FROM nomeRef WHERE estado = '$Linha[estado]' AND nivel = '3' ORDER BY nome ASC LIMIT $inicio, $quantidade

para 

SELECT SQL_CALC_FOUND_ROWS DISTINCT * FROM nomeRef WHERE estado = '$Linha[estado]' AND nivel = '3' ORDER BY nome ASC LIMIT $inicio, $quantidade

Usando 

SELECT FOUND_ROWS() AS total

para retornar o total de linhas.

Com este total de linhas você pode calcular a quantidade de páginas e desenvolver sua lógica de paginação

Olá Denis, muito obrigado pela sua ajuda ... com certeza deus te dará tudo em dobro e se eu poder ajudar estou as ordens.

 

Bom,

Fiz as modificações mas ainda não consigo fazer a paginação, lista tudo, por exemplo.

Coloque uma paginação com 500 linha por página, em SP que tem mais de 100000 registros ele apareceu 500 registro mas não parou, continuou listando os outros estados.

 

Veja no link o exemplo.

https://www.cinobras.com.br/sistema/teste.php

 

Obrigado.

Share this post


Link to post
Share on other sites
  • 0
Em 24/01/2018 at 10:13, Denis Courcy disse:

Modifique esta linha

SELECT * FROM nomeRef WHERE estado = '$Linha[estado]' AND nivel = '3' ORDER BY nome ASC LIMIT $inicio, $quantidade

para 

SELECT SQL_CALC_FOUND_ROWS DISTINCT * FROM nomeRef WHERE estado = '$Linha[estado]' AND nivel = '3' ORDER BY nome ASC LIMIT $inicio, $quantidade

Usando 

SELECT FOUND_ROWS() AS total

para retornar o total de linhas.

Com este total de linhas você pode calcular a quantidade de páginas e desenvolver sua lógica de paginação

Olá Denis, muito obrigado pela sua ajuda ... com certeza deus te dará tudo em dobro e se eu poder ajudar estou as ordens.

 

Bom,

Fiz as modificações mas ainda não consigo fazer a paginação, lista tudo, por exemplo.

Coloque uma paginação com 500 linha por página, em SP que tem mais de 100000 registros ele apareceu 500 registro mas não parou, continuou listando os outros estados.

 

Veja no link o exemplo.

https://www.cinobras.com.br/sistema/teste.php

 

Obrigado.

Alguém ainda pode me ajudar ????

Alguém ainda pode me ajudar ????

Alguém ainda pode me ajudar ????

Alguém ainda pode me ajudar ????

Share this post


Link to post
Share on other sites
  • 0

Movendo para forum de PHP

Share this post


Link to post
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.

Sign in to follow this