Pegando dessa Coluna até aquela coluna.

12/04/2007

0

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?


R3n4n

R3n4n

Responder

Posts

12/04/2007

Soeuseijothaz

Camarada,

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

Crie esta SP:
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:
   TESTE 20,30


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

Exemplo bem tosco espero que dê uma luz!

t+


Responder

13/04/2007

R3n4n

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!!!!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar