Array
(
)

Pegando dessa Coluna até aquela coluna.

R3n4n
   - 12 abr 2007

Bom, eu to com uma duvida imensa, procurei na net mas não axei, eu tava querendo algum comando que eu pudesse fazer o seguinte:

Tenho uma tabela de 100 registro, não quero trazer todos, e sim de 10 em 10 atravéz de um comando via aplicação, no caso minha programação teria um método que mandaria 2 parâmetros: 2 números inteiros que representam de onde até onde da tabela eu quero pegar.

Eu consigo pegar os 10 primeiros com o comando:
Select Top 10 [counas] from [nome da tabela]

como seria o comando pra pegar por exemplo da coluna 11 até a 20?

Jothaz
   - 12 abr 2007

Camarada,

Segue um exemplo de stored procedure que recebe dois parâmetros e retorna qtde registros entre eles.

Crie esta SP:
#Código

CREATE PROC TESTE
@INICIO INT, 
@FIM INT 
AS

SET NOCOUNT ON
--CRIANDO MASSA PARA TESTE
CREATE TABLE #TMP (COD INT)

DECLARE @DE INT, @ATE INT, @CONT INT
SELECT  @DE = 1, @ATE = 100

WHILE @DE <= @ATE
BEGIN
INSERT INTO TMP (COD) VALUES (@DE)
SELECT @DE = @DE + 1
END
--CRIANDO MASSA PARA TESTE

SELECT * 
FROM TMP
WHERECOD BETWEEN @INICIO AND @FIM


DROP TABLE TMP
SET NOCOUNT OFF


Execute-a assim:
#Código
   TESTE 20,30


Note que a SP cria uma tabela temporária para exemplificar.

Exemplo bem tosco espero que dê uma luz!

t+

R3n4n
   - 13 abr 2007

Opa, vlw aew, só que me surgiu uma outra dúvida...

Tipo no meu programa eu carrego de 100 em 100 registros, pra não demorar muito em selects de 6000 registros.

Para isso eu to criando um grid que recebe os dados da tabela, de 100 em 100 (TOP 100)

No caso, eu criei dois botões: PRA FRENTE E PRA TRAZ...

PRA FRENTE é fácil, eu apenas pego o ultimo valor (linha 100, coluna 1[coluna dos códigos dos registros]) e faço um select para valores MAIORES que aquele.

assim : SELECT TOP 100 * TabelaExemplo
WHERE CODIGO_DO_REGISTRO > últimoValorDaTabelaAnterior (é fácil pra mim pegar esse valor)
ORDER BY CODIGO_DO_REGISTRO

NO CASO DE PRA TRAZ é sinistro, eu pego o primeiro valor (linha 1,coluna 1) e faço um select para valores MENORES que aquele.

assim : SELECT TOP 100 * TabelaExemplo
WHERE CODIGO_DO_REGISTRO < primeiroValorDaTabelaAnterior (é fácil pra mim pegar esse valor)
ORDER BY CODIGO_DO_REGISTRO

porém aqui existe um problema, quando coloco esse codigo ele me traz os 100 primeiros, e eu entendo o pq. Exemplo:

CODIGO_DO_REGISTRO
201 -> primeiroValorDaTabelaAnterior
202
203
.
.
.
299
300 -> ultimoValorDaTabelaAnterior

se eu falo pra ele me trazer o top 100 de valores MENORES que 201 ele me traz:
1
2
3
.
.
.
100
Pois realmente são os 100 primeiros registros de valores menores que 201, mas eu queria que ele me trouxesse os valores:
101
102
103
.
.
.
200
Eu resolvo isso com o comando DESC depois de ORDE BY, mas ele me traz os valores em ordem decrescente, dai eu perco o controle das variáveis além de ficar feio.

RESUMINDO: Alguem sabe de um comando SQL que me traga 100 registros exatamente anteriores a um outro em ordem CRESCENTE.

um comando tipo SELECT DOWNTOP 100 (nem sei se existe, vo tentar ahehaehaeh)

POR FAVOR AJUDEM!!!!