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

Consulta, ver una cierta cantidad de registro sin limit

Estas en el tema de Consulta, ver una cierta cantidad de registro sin limit en el foro de Mysql en Foros del Web. Hola, necesito una consulta a una tabla que me muestre por ejemplo 10 registros exactamente de los que tenga, pero sin usar limit, si hay ...
  #1 (permalink)  
Antiguo 02/09/2015, 17:09
 
Fecha de Ingreso: enero-2013
Mensajes: 5
Antigüedad: 11 años, 3 meses
Puntos: 0
Consulta, ver una cierta cantidad de registro sin limit

Hola, necesito una consulta a una tabla que me muestre por ejemplo 10 registros exactamente de los que tenga, pero sin usar limit, si hay otra consulta si me pueden ayudar por favor.
  #2 (permalink)  
Antiguo 02/09/2015, 19:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta, ver una cierta cantidad de registro sin limit

No existe modo de obtener una cantidad restringida de registros si no es:
1) Usando LIMIT.
2) Que sólo existan en la tabla la cantidad de registros buscados, en base a condiciones que se pongan en la consulta.

¿Cuál es el problema de usar LIMIT?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/09/2015, 13:02
 
Fecha de Ingreso: enero-2013
Mensajes: 5
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Consulta, ver una cierta cantidad de registro sin limit

no me acepta ese comando desde visual basic. Gracias por responder
  #4 (permalink)  
Antiguo 21/09/2015, 13:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta, ver una cierta cantidad de registro sin limit

VB.NET o VB 6?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/09/2015, 15:23
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta, ver una cierta cantidad de registro sin limit

Hola danosmpar:

Me parece muy raro que tengas un error con el LIMIT, igual y deberías comentar en el foro del VB qué error es el que estás obteniendo, de esta manera podríamos revisar qué está pasando. En cuanto a otra forma para obtener esto, una sería "simulando" justamente por código la función LIMIT... hay varias formas, la más "simple" sería como se hace más o menos en ORACLE 11i, que sería con ROWNUM...

Checa este ejemplo, supongamos que tienes esta tabla:

Código MySQL:
Ver original
  1. mysql> SELECT nombre, apellido
  2.     -> FROM empleados;
  3. +--------+----------+
  4. | nombre | apellido |
  5. +--------+----------+
  6. | Uno    | One      |
  7. | Dos    | Two      |
  8. | Tres   | Three    |
  9. | Cuatro | Four     |
  10. | Cinco  | Five     |
  11. | Seis   | Six      |
  12. | Siete  | Seven    |
  13. | Ocho   | Eigth    |
  14. +--------+----------+
  15. 8 rows in set (0.00 sec)

ahora, supongamos que quieres paginar de 2 en 2, y mostrar la tercer página, es decir, los registros 5 y 6, con LIMIT lo harías así:

Código MySQL:
Ver original
  1. mysql> SELECT nombre, apellido
  2.     -> FROM empleados
  3.     -> LIMIT 4, 2;
  4. +--------+----------+
  5. | nombre | apellido |
  6. +--------+----------+
  7. | Cinco  | Five     |
  8. | Seis   | Six      |
  9. +--------+----------+
  10. 2 rows in set (0.00 sec)

Sin usar LIMIT, lo primero que tendrías que hacer es numerar tus registros, una forma sería así:

Código MySQL:
Ver original
  1. mysql> set @a:=0;
  2. Query OK, 0 rows affected (0.00 sec)
  3.  
  4. mysql> SELECT @a:=@a+1 rownum, nombre, apellido
  5.     -> FROM empleados;
  6. +--------+--------+----------+
  7. | rownum | nombre | apellido |
  8. +--------+--------+----------+
  9. |      1 | Uno    | One      |
  10. |      2 | Dos    | Two      |
  11. |      3 | Tres   | Three    |
  12. |      4 | Cuatro | Four     |
  13. |      5 | Cinco  | Five     |
  14. |      6 | Seis   | Six      |
  15. |      7 | Siete  | Seven    |
  16. |      8 | Ocho   | Eigth    |
  17. +--------+--------+----------+
  18. 8 rows in set (0.00 sec)

y entonces puedes filtrar por el campo ROWNUM, de tal suerte que sin LIMIT, la consulta quedaría así:

Código MySQL:
Ver original
  1. mysql> SET @a:=0;
  2. Query OK, 0 rows affected (0.00 sec)
  3.  
  4. mysql> SELECT * FROM
  5.     -> (  SELECT @a:=@a+1 rownum, nombre, apellido
  6.     ->    FROM empleados ) T
  7.     -> WHERE rownum > 4 AND rownum < 7;
  8. +--------+--------+----------+
  9. | rownum | nombre | apellido |
  10. +--------+--------+----------+
  11. |      5 | Cinco  | Five     |
  12. |      6 | Seis   | Six      |
  13. +--------+--------+----------+
  14. 2 rows in set (0.00 sec)

Si sólo quiere utilizar LIMIT con un parámetro, y mostrar por ejemplo 5 registros, como LIMIT lo harías así:

Código MySQL:
Ver original
  1. mysql> SELECT nombre, apellido
  2.     -> FROM empleados
  3.     -> LIMIT 5;
  4. +--------+----------+
  5. | nombre | apellido |
  6. +--------+----------+
  7. | Uno    | One      |
  8. | Dos    | Two      |
  9. | Tres   | Three    |
  10. | Cuatro | Four     |
  11. | Cinco  | Five     |
  12. +--------+----------+
  13. 5 rows in set (0.00 sec)

Con esta otra "técnica", lo tendrías que hacer así:

Código MySQL:
Ver original
  1. mysql> SET @a:=0;
  2. Query OK, 0 rows affected (0.00 sec)
  3.  
  4. mysql> SELECT * FROM
  5.     -> (  SELECT @a:=@a+1 rownum, nombre, apellido
  6.     ->    FROM empleados ) T
  7.     -> WHERE rownum <= 5;
  8. +--------+--------+----------+
  9. | rownum | nombre | apellido |
  10. +--------+--------+----------+
  11. |      1 | Uno    | One      |
  12. |      2 | Dos    | Two      |
  13. |      3 | Tres   | Three    |
  14. |      4 | Cuatro | Four     |
  15. |      5 | Cinco  | Five     |
  16. +--------+--------+----------+
  17. 5 rows in set (0.00 sec)


Esto es bastante inneficiente, y no es para nada recomendable, pero bueno, si no tienes otra opción, esta sería una forma para hacerlo.

Saludos
Leo.

Etiquetas: cantidad, limit, registro, tabla
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 06:55.