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

Paginação Group By e Limit


Aramis Rosa Serafim

Pergunta

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

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

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

Editado por Aramis Rosa Serafim
Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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.

Link para o comentário
Compartilhar em outros 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 ????

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,4k
×
×
  • Criar Novo...