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

Consulta ROW_NUMBER()

Estas en el tema de Consulta ROW_NUMBER() en el foro de SQL Server en Foros del Web. Saludos a todos. En esta oportunidad queria consultar acerca del metodo de paginacion que se debe utilizar en SQL Server usando la funcion ROW_NUMBER(), resulta ...
  #1 (permalink)  
Antiguo 22/01/2011, 17:35
 
Fecha de Ingreso: enero-2011
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Consulta ROW_NUMBER()

Saludos a todos.

En esta oportunidad queria consultar acerca del metodo de paginacion que se debe utilizar en SQL Server usando la funcion ROW_NUMBER(), resulta que quiero mostrar los campos del 11 al 20, pero al ejecutar la consulta por alguna razon me aparecen mas de 10 registros (exactamente 770), por lo que no entiendo que estoy haciendo mal, la base de datos utilizada es la de Northwind o Neptuno.

Consulta implementada:

Código SQL:
Ver original
  1. SELECT P.ProductID, P.ProductName, C.CategoryName, P.UnitPrice, RowNumber
  2.     FROM
  3.     (
  4.             SELECT P.ProductName,
  5.             ROW_NUMBER() OVER (ORDER BY P.ProductID) AS RowNumber
  6.             FROM Products AS P
  7.     ) AS Contact,
  8.     Categories AS C,
  9.     Products AS P
  10. WHERE P.CategoryID = C.CategoryID
  11.     AND RowNumber BETWEEN 11 AND 20
  #2 (permalink)  
Antiguo 24/01/2011, 08:56
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta ROW_NUMBER()

Código SQL:
Ver original
  1. SELECT P.ProductID, P.ProductName, C.CategoryName, P.UnitPrice, contact.RowNumber
  2.     FROM
  3.     (
  4.             SELECT P.ProductName,
  5.             ROW_NUMBER() OVER (ORDER BY P.ProductID) AS RowNumber
  6.             FROM Products AS P
  7.     ) AS Contact,
  8.     Categories AS C,
  9.     Products AS P
  10. WHERE P.CategoryID = C.CategoryID
  11.     AND contact.RowNumber BETWEEN 11 AND 20

Prueba asi :)

Saludos!
  #3 (permalink)  
Antiguo 15/06/2011, 12:36
Avatar de websistems  
Fecha de Ingreso: octubre-2010
Mensajes: 69
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Consulta ROW_NUMBER()

No es la misma consulta???????????????????
  #4 (permalink)  
Antiguo 16/06/2011, 12:41
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta ROW_NUMBER()

Hola Jivancho07:

Creo que el problema es que se está realizando un producto cartesiano entre tus tablas. En el FROM tienes tres tablas (la subconsulta que pones como Contact, Categories (C) y Products (P), sin embargo en el WHERE sólo estás haciendo la unión entre dos de ellas:

Código:
WHERE P.CategoryID = C.CategoryID
No pones la estructura de tus tablas, ni tampoco pones datos de ejemplo, por lo que es imposible poder recrear el error, pero tratando de adivinar un poco yo haría la consulta así:

SELECT
T.ProductID, T.ProductName, T.CategoryName, T.UnitPrice FROM
(SELECT
P.ProductID, P.ProductName, C.CategoryName, P.UnitPrice,
ROW_NUMBER() OVER (ORDER BY P.ProductID) AS RowNumber
FROM Categories C,
INNER JOIN Products P ON P.CategoryID = C.CategoryID
) T
WHERE
T.RowNumber BETWEEN 11 AND 20

Haz la prueba, y si continua con problemas postea la estructura de tus tablas y pon algunos datos de ejemplo, así como lo que estarías esperando de salida.

Saludos
Leo.

Etiquetas: Ninguno
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 12:15.