Aramis Rosa Serafim Postado Janeiro 23, 2018 Denunciar Share Postado Janeiro 23, 2018 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Aramis Rosa Serafim Postado Janeiro 24, 2018 Autor Denunciar Share Postado Janeiro 24, 2018 (editado) 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 Janeiro 24, 2018 por Aramis Rosa Serafim Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 24, 2018 Denunciar Share Postado Janeiro 24, 2018 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Aramis Rosa Serafim Postado Janeiro 24, 2018 Autor Denunciar Share Postado Janeiro 24, 2018 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Aramis Rosa Serafim Postado Janeiro 25, 2018 Autor Denunciar Share Postado Janeiro 25, 2018 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 ???? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 30, 2018 Denunciar Share Postado Janeiro 30, 2018 Movendo para forum de PHP Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Aramis Rosa Serafim
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
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.