Tomar registros desde cierta posicion (MySQL)

Iniciado por Ch3ck, 9 Septiembre 2009, 02:08 AM

0 Miembros y 1 Visitante están viendo este tema.

Ch3ck

Saludos, como hago para poder obtener los registros que hay en una tabla desde cierta posicion?

Por ejemplo tengo una tabka asi:

   ID  | Valor
    0   |   a
    1   |   b            Como lograria obtener los valores de la tabla desde el ID = 2
    2   |   c            Para que me devolviera 2 y 3 unicamente?
    3   |   d            Gracias por responder!

Red Mx

pues tiene que hacer una sentencia estableciendo limites ahora si solo quieres del 2 a otro numero

Código (sql) [Seleccionar]
SELECT * FROM `tabla` LIMIT 2 , 30


Ahora si quieres todos los que siguen a 2 es decir sin limite


Código (sql) [Seleccionar]
SELECT * FROM `tabla` WHERE `ID` > 2


donde tabla es el nombre de tu tabla.
Desarrollar Malware Es Causa De Cancer...

Ch3ck

SELECT * FROM `tabla` LIMIT 2 , 30.... oh.. limites, no lo conocia... y justo lo que necesitaba.

Muchas gracias por responder tan rapido Red Mx!!!!... por eso amo este foro!!

Saludos!

Red Mx

De anda, es bueno saber que mi respuesta te fue util.
Desarrollar Malware Es Causa De Cancer...

Gorky

Tu suerte es que estas en MySQL ya que en Oracle no existe ese parametro.

Red Mx

Cita de: Gorky en 10 Septiembre 2009, 10:32 AM
Tu suerte es que estas en MySQL ya que en Oracle no existe ese parametro.


Limites en Oracle

A veces la incompatibilidad entre varios sistemas que implementan un Standard pueden dar un fuerte dolor de cabeza:

Por ejemplo, el standard SQL lo podemos ver implementado en los sistemas de Bases de Datos MySql y en los Oracle, y hay en ellos muchas coasa que funcionan en uno si y en otro no, como por ejemplo la forma de declarar los limites en una sentencia.

Si quiero recoger todos los campos del registro 5 al 15 de la tabla MiTabla

En My Sql es algo como
=>
Código (sql) [Seleccionar]
SELECT * FROM MiTabla LIMIT 5, 10;
Y sin embargo en Oracle sería algo como
=>
Código (sql) [Seleccionar]
SELECT * FROM (SELECT MiTabla.*, ROWNUM AS Fila FROM MiTabla) WHERE Fila Between 5 AND 15;

La cosa aun se complica más si además queremos que antes de hacerse el Limite queremos hacer una ordenación por algún campo

En My Sql es algo como
=>
Código (sql) [Seleccionar]
SELECT * FROM MiTabla ORDER BY Nombre ASC LIMIT 5, 10;
Y sin embargo en Oracle sería algo como
=>
Código (sql) [Seleccionar]
SELECT * FROM (SELECT TEMP.*, ROWNUM AS Fila FROM (SELECT * FROM MiTabla ORDER BY Nombre ASC) TEMP) WHERE Fila Between 5 AND 15;

Un auténtico asco.

Visto en :http://juanjeruiz.blogspot.com/2007/11/limites-en-oracle.html
Desarrollar Malware Es Causa De Cancer...

^Tifa^

Oracle es un asco por no acomodar o facilitar la consulta SQL a un usuario  novato????   :-\

Sinceramente, los productos de calidad precisa no siempre son 'amigables ni populares' porque piensan que poca gente maneja a perfeccion Oracle? y porque piensan que un DBA o un Developer en Oracle suelen tener un salario entre los mas altos en empleos de tecnologia?

Oracle es un mundo enorme, incluye el server, soporta POO, soporta java, maneja perfiles y procesos de usuarios con limite y todo, soporta tremendamente las transacciones masivas fuertes sin alentarse o explotarse como haria MySQL cuando pasa de unos miles largos de registros.... Oracle es totalmente ACID compatible, MySQL (Aunque me encanta) no se le puede comparar.... y la seguridad que implementa Oracle no se puede comparar, y la distribucion del manejo de memoria en un sistema Unix, entre otras cosas...

Son dos productos distintos, uno va dirigido para novatos otros para profesionales, no pueden comparar y jamas se atrevan a comparar Postgresql vs Oracle porque es una perdida de tiempo. Oracle es Oracle y no solo por nombre.

^Tifa^

Y sobre la consulta en Oracle seria:

SELECT * FROM TABLA WHERE ROWNUM BETWEEN 2 AND 30

que tiene eso de complicado????? Es solo lenguaje SQL basado en el ANSI SQL