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

Problema con LIMIT de una consulta

Estas en el tema de Problema con LIMIT de una consulta en el foro de Mysql en Foros del Web. Hola a todos amigos del web. Tengo un problema con una consulta a mi BD. Les cuento: Tengo una tabla con dos registros Reg. 1 ...
  #1 (permalink)  
Antiguo 18/03/2016, 05:34
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 11 años, 4 meses
Puntos: 1
Problema con LIMIT de una consulta

Hola a todos amigos del web. Tengo un problema con una consulta a mi BD. Les cuento:

Tengo una tabla con dos registros
Reg. 1 ->video1
Reg. 2 ->video2

Con una consulta en la que quiero mostrar todos los registros que tengo menos el registro de la primera línea. En este caso solo me mostraría 'video2'.
Esta es la consulta:
Código MySQL:
Ver original
  1. SELECT * FROM videos_tabla WHERE videos_tabla.tipo_video = 1  ORDER BY videos_tabla.fecha_video DESC LIMIT 1, 3

Lo que me ocurre es que teniendo ese límite no me muestra el registro 2(video2)... sin embargo si añado un tercer registro, llamémosle 'video3'... en ese caso si me muestra el registro 2 y 3.
Pero si solo tengo 2 registros... debiendo mostrar el 2... no me lo muestra.

Última edición por gnzsoloyo; 18/03/2016 a las 05:45 Razón: Código de programacion no permitido en foros de BBDD
  #2 (permalink)  
Antiguo 18/03/2016, 05:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con LIMIT de una consulta

Código MySQL:
Ver original
  1. SELECT * FROM videos_tabla
  2. WHERE tipo_video = 1  
  3. ORDER BY fecha_video DESC
  4. LIMIT 1, 3
Partamos del detalle que tienes un WHERE con una condición que es obligatoria, por lo que la query te mostraría el segundo video sí y sólo si el campo tipo_video de ambos registros es 1.
¿Se cumple esa condición?

Además, el ORDER BY se aplica antes, por lo que si el registro con fecha más reciente es el que tiene el campo en 1, entonces tampoco te lo mostraría... porque quedaría en el registro descartado al mover el puntero.

Por eso te decía en un post que hay que ver tabla Y DATOS.

¿Puedes mostrarnos los datos reales de la tabla?
__________________
¿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 18/03/2016, 08:33
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Problema con LIMIT de una consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Partamos del detalle que tienes un WHERE con una condición que es obligatoria, por lo que la query te mostraría el segundo video sí y sólo si el campo tipo_video de ambos registros es 1.
¿Se cumple esa condición?

Además, el ORDER BY se aplica antes, por lo que si el registro con fecha más reciente es el que tiene el campo en 1, entonces tampoco te lo mostraría... porque quedaría en el registro descartado al mover el puntero.

Por eso te decía en un post que hay que ver tabla Y DATOS.

¿Puedes mostrarnos los datos reales de la tabla?
Sí, se cumple la condición. Según la consulta el más reciente nunca lo mostraría ya que la consulta está creada con ese fin... con el fin de que no muestre el más reciente sino a partir del segundo registro.
La tabla con los registros actuales es:

id_video tipo_video nombre_video fecha_video
35 1 esmeralda 2016/03/15
36 1 restos del dia 2016/03/16
37 8 demo 2016/03/17

y la consulta
Código MySQL:
Ver original
  1. SELECT * FROM videos_tabla WHERE videos_tabla.tipo_video = 1 ORDER BY videos_tabla.fecha_video DESC LIMIT 1, 3

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
...con lo cual debería mostrar el video con id_video=35, ya que con el 'LIMIT 1, 3' estoy excluyendo el más reciente (id_video=36) y muestro los tres siguientes... como solo cumple la condición el 35 y 36 y el 36 lo excluye....debería mostrar solamente el 35.

Lo que no entiendo es que la misma consulta hecha con lenguaje para mysql lo muestra perfecto al cambiarlo a mysql no... pero es más, si yo en la BD cambio el tipo_video al video 37 y lo pongo en '1'... sí muestra el 35 y el 36. Pero si solo tengo esos dos con esa condición...no. Y ahí es donde no encuentro cual es el error.
  #4 (permalink)  
Antiguo 18/03/2016, 08:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con LIMIT de una consulta

Pues si yo hago la prueba está todo OK:
Código MySQL:
Ver original
  1. mysql> DROP TABLE IF EXISTS video;
  2. Query OK, 0 rows affected, 1 warning (0.00 sec)
  3.  
  4. mysql> CREATE TABLE IF NOT EXISTS video (
  5.     ->     id_video INT UNSIGNED NOT NULL PRIMARY KEY,
  6.     ->     tipo_video SMALLINT UNSIGNED NOT NULL,
  7.     ->     nombre_video VARCHAR(200) NOT NULL,
  8.     ->     fecha_video DATE NOT NULL
  9.     -> );
  10. Query OK, 0 rows affected (0.11 sec)
  11.  
  12. mysql>  INSERT INTO video VALUES (35,1, 'esmeralda',  '2016-03-15'),
  13.     ->  (36, 1, 'restos del dia', '2016-03-16'),
  14.     -> (37, 8, 'demo' ,'2016-03-17');
  15. Query OK, 3 rows affected (0.05 sec)
  16. Records: 3  Duplicates: 0  Warnings: 0
  17.  
  18. mysql> SELECT
  19.     ->     *
  20.     -> FROM
  21.     ->     video;
  22. +----------+------------+----------------+-------------+
  23. | id_video | tipo_video | nombre_video   | fecha_video |
  24. +----------+------------+----------------+-------------+
  25. |       35 |          1 | esmeralda      | 2016-03-15  |
  26. |       36 |          1 | restos del dia | 2016-03-16  |
  27. |       37 |          8 | demo           | 2016-03-17  |
  28. +----------+------------+----------------+-------------+
  29. 3 rows in set (0.00 sec)
  30.  
  31. mysql> SELECT
  32.     ->     *
  33.     -> FROM
  34.     ->     video
  35.     -> ORDER BY fecha_video DESC;
  36. +----------+------------+----------------+-------------+
  37. | id_video | tipo_video | nombre_video   | fecha_video |
  38. +----------+------------+----------------+-------------+
  39. |       37 |          8 | demo           | 2016-03-17  |
  40. |       36 |          1 | restos del dia | 2016-03-16  |
  41. |       35 |          1 | esmeralda      | 2016-03-15  |
  42. +----------+------------+----------------+-------------+
  43. 3 rows in set (0.00 sec)
  44.  
  45. mysql> SELECT
  46.     ->     *
  47.     -> FROM
  48.     ->     video
  49.     -> WHERE
  50.     ->     tipo_video = 1
  51.     -> ORDER BY fecha_video DESC;
  52. +----------+------------+----------------+-------------+
  53. | id_video | tipo_video | nombre_video   | fecha_video |
  54. +----------+------------+----------------+-------------+
  55. |       36 |          1 | restos del dia | 2016-03-16  |
  56. |       35 |          1 | esmeralda      | 2016-03-15  |
  57. +----------+------------+----------------+-------------+
  58. 2 rows in set (0.00 sec)
  59.  
  60. mysql> SELECT
  61.     ->     *
  62.     -> FROM
  63.     ->     video
  64.     -> WHERE
  65.     ->     tipo_video = 1
  66.     -> ORDER BY fecha_video DESC
  67.     -> LIMIT 1, 3;
  68. +----------+------------+--------------+-------------+
  69. | id_video | tipo_video | nombre_video | fecha_video |
  70. +----------+------------+--------------+-------------+
  71. |       35 |          1 | esmeralda    | 2016-03-15  |
  72. +----------+------------+--------------+-------------+
  73. 1 row in set (0.02 sec)
En consecuencia, algo se puede estar filtando en la programación...
¿Verificaste cuál es la CANTIDAD de registros que devuelve el set de datos a la aplicación?
__________________
¿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 18/03/2016, 09:10
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Problema con LIMIT de una consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En consecuencia, algo se puede estar filtando en la programación...
¿Verificaste cuál es la CANTIDAD de registros que devuelve el set de datos a la aplicación?
No se hacerlo... pero ahora investigo y veo qué me devuelve... porque es muy raro!!
  #6 (permalink)  
Antiguo 18/03/2016, 10:37
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Problema con LIMIT de una consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En consecuencia, algo se puede estar filtando en la programación...
¿Verificaste cuál es la CANTIDAD de registros que devuelve el set de datos a la aplicación?
Me devuelve 1 registro... que es lo que debería mostrarse. Pero no consigo que sea así
  #7 (permalink)  
Antiguo 18/03/2016, 10:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con LIMIT de una consulta

Cita:
Iniciado por raulgranadosraul Ver Mensaje
Me devuelve 1 registro... que es lo que debería mostrarse. Pero no consigo que sea así
Si la cantidad de registros que se obtienen en PHP es de uno (1) , y el problema es que no logras mostrarlo, entonces hay un error en PHP al momento de desplegar la información en el formulario, en la web.
En el post en PHP no has puesto todo el código, por lo que no estoy completamente seguro de lo que estás haciendo.

Podrías mostrar eso en el hilo de ese foro?: http://www.forosdelweb.com/f18/apren...6/#post4782749
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 18/03/2016, 10:52
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Problema con LIMIT de una consulta

¡¡Vaya!! Justo donde no estaba mirando es donde estaba el error...

Tengo unas condiciones para que se muestren los resultados según unas condiciones.

Código PHP:
Ver original
  1. if ($totalRows_videos_doblajes_acordeon > 0 && $totalRows_videos_doblajes <= 1)
  2. {
  3. ...
  4.  } else if ($totalRows_videos_doblajes_acordeon > 0 && $totalRows_videos_doblajes > 1)
  5. {
  6. ...
  7.  } else
  8. {
  9. ...
  10. }
.... y había colocado mal una condición. Era solo eso. Arreglado de la siguiente manera ya quedo.
Código PHP:
Ver original
  1. if ($totalRows_videos_doblajes_acordeon > 0 && $totalRows_videos_doblajes < 1)
  2. {
  3. ...
  4.  } else if ($totalRows_videos_doblajes_acordeon > 0 && $totalRows_videos_doblajes >= 1)
  5. {
  6. ...
  7.  } else
  8. {
  9. ...
  10. }

Al final no tenía nada que ver la consulta...sino esa condición.
Siento la lata gnzsoloyo y gracias por tu infinita ayuda...como siempre.
  #9 (permalink)  
Antiguo 18/03/2016, 10:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con LIMIT de una consulta


__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bases-de-datos-general, bd, limit, registros, select, 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 22:29.