SQL SERVER 2008 agora com Paginação no Banco
Salve Salve Pessoal…
Hoje um amigo de trabalho me deu uma noticia interessante. O SQL SERVER 2008 está com Paginação no próprio banco de dados, ou seja, você só precisará enviar um select e ele cuida da paginação para você.
Um select semelhante a este:
SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY dc_bairro ASC) AS Row ,* FROM PI_ODS_SICAT_CDABA ) AS PI_ODS_SICAT_CDABA WHERE Row between 1 AND 100
Só será necessário incrementar o número de linhas por pagina que se deseja obter…
Beleza, é isso, apenas para deixar registrado aqui a informação.
Abraços.
Categories: PHP
Mas isso aí você faz basicamente usando o LIMIT.
Exemplo: SELECT * FROM `produtos` LIMIT 0, 100;
Onde o 0 seria o registro inicial gerado pela query e 100 seria a quantidade de registros que seriam retornados..
Exemplo de paginação
SELECT * FROM `produtos` LIMIT 0, 10; // Pega os 10 primeiros registros
SELECT * FROM `produtos` LIMIT 10, 10; // Pega os 10 próximos registros: 11 até o 20
SELECT * FROM `produtos` LIMIT 20, 10; // Pega os 10 próximos registros: 21 até o 30
Você pode fazer algo do tipo:
SELECT * FROM `produtos` LIMIT ({$QT} *{$PAGE}), {$QT};
onde $QT é a quantidade de itens por página e $PAGE é o número da página começando a partir do zero, ex: 1ª página seria 0, 2ª página seria 1, etc..
Mas de qualquer forma, já é um avanço…
O Topico é SQL! e não MySQL…
cala a boca idiota, ele esta usando sql server
O cara te orienta
Amigo eu testei o codigo no SQL Server 2008 mas não funciona quando se tem uma paginação de uma busca, funciona somente quando vc tras todos os registro do banco, quando vc tem um where o campo Row se mantem como se o resultado fosse de todos os registros. Não entendo como a microsoft não foi se atentar para uma funcionalidade tão importante para nos programadores web…
Se alguem saber usar paginação em buscas do sqlserver 2008 posta ai por favor…
A muito custo consegui criar a consulta com paginação utilizando criterios de busca. Deu mais trabalho ainda adaptar no codeigniter. Mas para quem for tentar é necessário que toda a consulta original com os criterios de busca estejam dentro do from no select pode colocar apenas * o where Row between x and y deve ficar no where fora do from, dentro da subconsulta que vai no from também nao pode conter order by fica na consulta principal da paginacao, se alguem entendeu alguma coisa do que eu disse e for tentar fazer o caminho é por ai… boa sorte a todos!
Bom, pessoal, com atraso mas vejam só, a notícias que eu “espelhei” aqui não foi uma experiência de desenvolvimento, eu até então não utilizei ou migrei minhas aplicações para o SQL 2008. portanto não utilizei a informação aqui “espelhada”.
E acredito que é exatamente o exemplo descrito no post não?
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY dc_bairro ASC) AS Row ,*
FROM PI_ODS_SICAT_CDABA
) AS PI_ODS_SICAT_CDABA
WHERE Row between 1 AND 100