Select top

27/04/2005 - 11:46 por Jose L. | Informe spam
Hola, tengo un problemilla con el select top en las consultas sobre sqlserver.

Tengo una tabla con 15 registros, pero para mostrarlos al usuario, tengo que
paginarlos de 5 en 5, con lo que ejecuto la query con select top 5..., select
top 10... y select top 15..., todas ellas con un order by por una determinada
columna, para despues rellenar un array con los registros que me interesan.

Pues bien, resulta que el orden de los registros no es el mismo en las 3
consultas, con lo que en la paginación no veo todos los datos correctamente.

alguien sabe que me puede estar pasando?, alguna sugerencia?

Segun he leido en los BOL de sqlserver, el top con un order by, primero
ordena y despues obtiene los registros indicados, pero parece ser que no lo
está haciendo bien. Alguna idea?

Gracias por anticipado
 

Leer las respuestas

#1 Carlos Sacristán
27/04/2005 - 12:17 | Informe spam
Si las condiciones son las mismas y el conjunto de datos no ha cambiado,
el orden debería seguir siendo el mismo. Efectivamente para poder sacar los
n primeros registros de un conjunto primero hay que ordenarlos para saber
qué significa exactamente "primeros". Dinos exactamente qué es lo que te
parece que el gestor esté haciendo mal y te podremos ayudar mejor.

Otra cosa, para paginar no es necesario ir aumentando el número de
registros a mostrar, sino que lo que variará será el registro a partir del
cual mostrar. Es decir, si la primera vez que le mostraste los 5 primeros
registros al usuario, el último de ellos tenía como valor de la PK un 5 (por
ejemplo), la sentencia que tendrás que formar será algo similar a la
siguiente:

SELECT TOP 5 campo1, campo2, campo...
FROM tuTabla
WHERE campoPK > 5


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Jose L." (donotspam)> escribió en el mensaje
news:
Mostrar la cita
sqlserver.
Mostrar la cita
que
Mostrar la cita
select
Mostrar la cita
determinada
Mostrar la cita
interesan.
Mostrar la cita
correctamente.
Mostrar la cita
lo
Mostrar la cita

Preguntas similares