none
Sql express 2012 RRS feed

  • Pergunta

  • como posso paginar no sql express 2012

    e que a mesma rotina sirva para o sql express 2008

    não quero usar store procedures

    no mysql sql eu usava limit

    obrigado

    quarta-feira, 30 de outubro de 2013 15:42

Respostas

  • No sql vc usa TOP, deste jeito:

    Select TOP 2000 * from tabela

    Isso é valido para todas as versoes do SQL Server e é o equivalente ao LIMIT do MySQL

    O problema é o OFFSET.. este comando surgiu a partir da versao 2012, entao nao existe uma forma de fazer compativel com 2008 e 2012 sem usar store procedures...

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr quarta-feira, 30 de outubro de 2013 17:28
    quarta-feira, 30 de outubro de 2013 16:01

Todas as Respostas

  • cara a melhor maneira ia ser utilizando uma procedure mais se vc quer fazer na mao vai ser mais ou menos assim

    1º - count na tabela com seus join's filtros (where) -- aqui vc ja tem o total de itens ai vc divide pela qtd de itens por pagina vc vai preferir

    2º - sua tabela precisa ter id's unicos mesmo que não tenham nada haver com o registro apenas para qdo vc for chamar a segunda pagina chamar os itens maiores que o seu ultimo registo


    --Rafael Albuquerque

    quarta-feira, 30 de outubro de 2013 15:57
  • No sql vc usa TOP, deste jeito:

    Select TOP 2000 * from tabela

    Isso é valido para todas as versoes do SQL Server e é o equivalente ao LIMIT do MySQL

    O problema é o OFFSET.. este comando surgiu a partir da versao 2012, entao nao existe uma forma de fazer compativel com 2008 e 2012 sem usar store procedures...

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr quarta-feira, 30 de outubro de 2013 17:28
    quarta-feira, 30 de outubro de 2013 16:01
  • obrigado
    quarta-feira, 30 de outubro de 2013 16:34
  • Deleted
    quarta-feira, 30 de outubro de 2013 18:28
  • Deste modo:

    SELECT * FROM
    (
    	SELECT TOP(20) FROM
    	(
    		SELECT TOP(60) * FROM tabela ORDER BY coluna ASC
    	) AS r1 ORDER BY coluna DESC
    ) AS r2 ORDER BY coluna ASC
    
    
    WITH resultado AS
    (
    	SELECT *, ROW_NUMBER() OVER (ORDER BY coluna) AS linha FROM tabela
    )
    
    SELECT * FROM resultado WHERE linha BETWEEN x AND y

    quarta-feira, 30 de outubro de 2013 18:57