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

Preguntas similare

Leer las respuestas

#6 Carlos Sacristán
27/04/2005 - 13:56 | Informe spam
Cuando hablo de PK, me refiero a cualquier campo de ese conjunto de
resultados que sea único. Si se repitiera, el conjunto de resultados podría
variar en el orden que comentas (o al menos nada te garantiza que no pueda
suceder esto). Por ejemplo, teniendo estos datos:

CAMPO1 CAMPO2 CAMPOPK
aaa valor1 1
aaa valor2 2

Si lo ordenas únicamente por CAMPO1 (valores duplicados), el gestor
ordenaría correctamente tanto si muestra primero el registro cuyo PK es '1'
como el otro. ¿Es esto lo que te está ocurriendo?


Un saludo

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

"Jose L." (donotspam)> escribió en el mensaje
news:
No se si esto tiene algo que ver, pero la ordenación no se realiza por la
PK., con lo
que no puedo realzar la clausula where que comentas.

en cuanto a lo que está realizando el motor, la verdad es que no tengo ni
idea, porque parece ser que cada vez que lanzo las consultas, me devuelve
algo diferente.

"Carlos Sacristán" escribió:

> 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:
> > 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
>
>
>
Respuesta Responder a este mensaje
#7 Maxi
27/04/2005 - 14:01 | Informe spam
Hola, pues al no ver la instruccion que estas haciendo se nos complica mucho
poder identificar el problema. De todas maneras te puedo decir que el Order
by con el TOP si funciona en sqlserver y muy bien :-),

Tambien te puedo recomendar un articulo del amigo Javier Loria donde nos
cuenta como paginar registros

http://www.configuracionesintegrale...articulo%5


Salu2
Maxi


"Jose L." (donotspam)> escribió en el mensaje
news:
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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida