Escribir una consulta LÍMITE con PHP y MSSQL

  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de Usuario
  • Registrado: Nov 18, 2007
  • Mensajes: 429
  • Status: Offline

Nota Marzo 25th, 2011, 11:24 am

He buscado aquí y Google por una solución a esto. Los que encontré no me gusta y quiero ver si hay una manera mejor. Tengo una base de datos MSSQL, el primero he trabajado, que me conecto a la utilización de PHP. Era un pequeño dolor de PHP para trabajar con él, pero he configurado las cosas peor. Como he estado trabajando con MSSQL, como he llegado a varias cosas al respecto. Entonces, esto. ¿Cómo no un SQL ofrece un límite y Offset!? Las soluciones que se encuentran están en el límite loco cuando se yuxtaponen la consulta MSSQL con lo que se puede lograr con MySQLs LÍMITE. Yo no podía hacerme su aplicación hasta que me envió aquí para ver si un gurú o MS SQL conoce un método más sencillo, sin todas las consultas anidadas. Pensé que mi gracia salvadora sería mssql_fetch_batch PHPS (), pero no parece estar funcionando para mí. En realidad estaba utilizando el lote inicial y cambió a los registros SELECCIONAR TOP n sólo para asegurarme de que estaba recibiendo algunos datos, que era yo. Luego trató de compensar y me encontré con este problema.

Además, el lote parece recuperar todavía todos los datos. Estoy tratando de traer muchos registros sin aumentar la memoria en el servidor de mucho. ¿Soy mejor con un lote y si no ¿cómo se utiliza una consulta de compensar a tirar sólo unos pocos registros a la vez como la paginación?
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Marzo 25th, 2011, 11:24 am

  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6128
  • Loc: Seattle, WA
  • Status: Offline

Nota Marzo 25th, 2011, 12:01 pm

SQL Código: [ Select ]
SELECT TOP 10 *
FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum
    FROM MyTable
) AS MyDerivedTable
WHERE MyDerivedTable.RowNum BETWEEN @startRow AND @endRow
  1. SELECT TOP 10 *
  2. FROM (
  3.     SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum
  4.     FROM MyTable
  5. ) AS MyDerivedTable
  6. WHERE MyDerivedTable.RowNum BETWEEN @startRow AND @endRow


http://stackoverflow.com/questions/1879 ... sql-server
The Beer Monocle. Classy.
  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de Usuario
  • Registrado: Nov 18, 2007
  • Mensajes: 429
  • Status: Offline

Nota Marzo 25th, 2011, 8:22 pm

No puedo esperar a probarlo. Vi varios puestos en stackoverflow pero no vi esta consulta. Algunos de los que vi se acaba de salida de la mano. Éste no es tan malo. Se debe trabajar muy bien. Gracias por el puesto.
  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6128
  • Loc: Seattle, WA
  • Status: Offline

Nota Marzo 26th, 2011, 11:29 am

No hay problema. Siempre he asumido límite era parte del estándar SQL, cuando, en realidad, no lo es.
The Beer Monocle. Classy.

Publicar Información

  • Total de mensajes en este tema: 4 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 248 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC