Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Select para valores intermedios

Estas en el tema de Select para valores intermedios en el foro de SQL Server en Foros del Web. Hola, Tengo un problema con un Select, para una pagina que estoy haciendo, tengo una consulta asi: Select * from Tiendas where Estado like '' ...
  #1 (permalink)  
Antiguo 19/09/2008, 14:44
 
Fecha de Ingreso: mayo-2008
Mensajes: 15
Antigüedad: 16 años
Puntos: 0
Select para valores intermedios

Hola, Tengo un problema con un Select, para una pagina que estoy haciendo, tengo una consulta asi:

Select * from Tiendas where Estado like '' <--- Recibe parametro desde un Select en ASP.

el problema es que llego a tener 200 registros y a la hora de publicar eso, pues se ve muy pesada la pagina, por lo que quisiera hacer una consulta que me permitiera dividir es decir que me muestre por ejemplo los primeros 20 registros, y que a partir de un vinculo de siguiente me muestre del 21 al 40, y asi

pense en una consulta con un Between pero no logro llegar a nada.
Espero me puedan Ayudar

Saludos
  #2 (permalink)  
Antiguo 19/09/2008, 15:35
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Select para valores intermedios

Lo que desea es paginar los resultados pregunte en el foro de asp.

Para la consulta utilice top si es SQL server o limit si es mysql]

Código:
select top 20 * from tabla where condicion;
select * from tabla where condicion limit 20;
  #3 (permalink)  
Antiguo 19/09/2008, 17:40
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Select para valores intermedios

Le dejo un store que hace la funcion de PAGINAR los resultados, espero y le sirva:

CREATE PROCEDURE usp_ReturnPage(
@Select varchar(1000),
@OrderBy varchar(1000),
@StartRow int,
@EndRow int)
AS
BEGIN
SET NOCOUNT ON
declare @ColList varchar(2000);
declare @Where varchar(2000);
declare @i int;
declare @i2 int;
declare @tmp varchar(1000);
declare @dec varchar(1000);
declare @f varchar(100);
declare @d varchar(100);
declare @Symbol char(2);
declare @SQL nvarchar(5000);
declare @Sort varchar(1000);

set @Sort = @OrderBy + ', '
set @dec = ''
set @Where = ''
set @SQL = ''

set @i = charindex(',' , @Sort)
while @i != 0
begin
set @tmp = left(@Sort,@i-1)
set @i2 = charindex(' ', @tmp)
set @f = ltrim(rtrim(left(@tmp,@i2-1)))
set @d = ltrim(rtrim(substring(@tmp,@i2+1,100)))
set @Sort = rtrim(ltrim(substring(@Sort,@i+1,100)))
set @i = charindex(',', @Sort)
set @symbol = case when @d = 'ASC' then '>' else '<' end +
case when @i=0 then '=' else '' end
set @dec = @dec + 'declare @' + @f + ' sql_variant; '
set @ColList = isnull(replace(replace(@colList,'>','='),'<','=') + ' and ','') +
@f + @Symbol + ' @' + @f
set @Where = @Where + ' OR (' + @ColList + ') '
set @SQL = @SQL + ', @' + @f + '= ' + @f
end

set @SQL = @dec + ' ' +
'SET ROWCOUNT ' + convert(varchar(10), @StartRow) + '; ' +
'SELECT ' + substring(@SQL,3,7000) + ' from (' + @Select + ') a ORDER BY ' +
@OrderBy + '; ' + 'SET ROWCOUNT ' +
convert(varchar(10), 1 + @EndRow - @StartRow) + '; ' +
'select * from (' + @Select + ') a WHERE ' +
substring(@Where,4,7000) + ' ORDER BY ' + @OrderBy + '; SET ROWCOUNT 0;'
exec sp_executesql @SQL
END
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:35.