PHP - Como obtener todos los registros menos el primero

   
Vista:

Como obtener todos los registros menos el primero

Publicado por Luis (2 intervenciones) el 26/08/2017 02:19:41
Hola a todos y gracias por detenerse a leer mi pregunta.

En un servidor web tengo una base de datos de la cual recojo todos los registros por orden ascendente con la siguiente consulta desde PHP

1
$consulta = "SELECT * FROM Alumnos ORDER BY edad";

pero quiero que se omitan los dos primeros resultados y no lo logro.

Estoy pprovando
1
$consulta = "SELECT * EXCEPT SELECT TOP 2 FROM Alumnos ORDER BY edad";

1
$consulta = "SELECT * FROM Alumnos ORDER BY edad EXCEPT SELECT TOP 2";

Les agradeceria de su ayuda para encontrar la sentencia correcta.

Saludos y muchas gracias por su tiempo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Como obtener todos los registros menos el primero

Publicado por kip (862 intervenciones) el 26/08/2017 03:56:38
Hola, que DBMS usas ? Por la sentencia TOP se puede deducir que es SQL Server, es ese el que usas o es MySQL ? En ambos casos debes usar la sentencia OFFSET pero de diferente forma.

Si es SQL Server 2012 o una version mayor deberias hacer algo asi:

1
$consulta = "SELECT * FROM Alumnos ORDER BY edad OFFSET 2 ROWS";
https://technet.microsoft.com/es-es/library/gg699618(v=sql.110).aspx

Para MySQL se lo hace parecido pero debe ir siempre junto con LIMIT, en tu caso debes aplicar lo que recomiendan en la documentacion para traer todos los resultados omitiendo N filas y que la sentencia LIMIT no tenga efecto:

To retrieve all rows from a certain offset up to the end of the result set, you can use some large number for the second parameter. This statement retrieves all rows from the 96th row to the last:
https://dev.mysql.com/doc/refman/5.7/en/select.html#id4651990

1
SELECT * FROM tbl LIMIT N,18446744073709551615;

O lo que es lo mismo:

1
SELECT * FROM tbl LIMIT 18446744073709551615 OFFSET N;

Donde N es el numero de filas a omitir.

En tu caso podria ser:

1
$consulta = "SELECT * FROM Alumnos ORDER BY edad LIMIT 18446744073709551615 OFFSET 2";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Como obtener todos los registros menos el primero

Publicado por Luis (2 intervenciones) el 26/08/2017 12:41:13
Muchas gracias kip por su pronta respuesta pero por desgracia ninguna de sus respuestas obtuvo el resultado esperado la respuesta fue en todos los casos :

No hay alumnos

Disculpe mi poco nivel pero esta serie 18446744073709551615 que se antepone a OFFSET que es lo que está indicando?

Y esta es la información y versión del servidor por si le sirve de ayuda.

phpMyAdmin

Database server

Server: Localhost via UNIX socket
Server type: MariaDB
Server version: 10.1.20-MariaDB - MariaDB Server
Protocol version: 10
User: xxxxx_xxxxx@2a02:4780:bad:c0de::13
Server charset: UTF-8 Unicode (utf8)


Web server

Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips
Database client version: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: 241ae00989d1995ffcbbf63d579943635faf9972 $
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 7.0.8


phpMyAdmin

Version information: 4.6.6 , latest stable version: 4.7.4

Documentation
Official Homepage
Contribute
Get support
List of changes
License
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad