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

[SOLUCIONADO] Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Estas en el tema de Consulta sobre: contador de filas, seleccionar fila y mostrarla. en el foro de Mysql en Foros del Web. Muy buenas, en el proyecto que estoy haciendo, tengo una consulta hacia una tabla de la BD en la que suma todas las veces que ...
  #1 (permalink)  
Antiguo 08/01/2014, 05:11
 
Fecha de Ingreso: diciembre-2013
Mensajes: 49
Antigüedad: 10 años, 11 meses
Puntos: 1
Exclamación Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Muy buenas, en el proyecto que estoy haciendo, tengo una consulta hacia una tabla de la BD en la que suma todas las veces que se cumple ese SELECT, con mysql_num_rows.

Luego, tengo un SELECT OPTION, el cual aparece el numero de options dependiendo del numero de lineas que encontró en la BD. Entonces, si elijo el option numero 2, debería de mostrarme el contenido de la fila numero 2, pero de las que cumplen la condición (primer SELECT).

Quiere decirse que si en la tabla de la BD hay 500 filas, pero solo suma 40 (cumpliéndose la condición del SELECT), en el SELECT OPTION debera de aparecerme 40 opciones. ESTA PARTE FUNCIONA.

Ahora, cuando envió la opción elegida (ejemplo elegido la opcion 2) en el SELECT OPTION a través de ajax al php (hace bien el envío del dato), no se como hacerlo para que muestre el contenido de la linea 2, pero del grupo de las 40.

No se si me he explicado bien. He buscado por Internet, he leído sobre mysql_result, he probado de varias formas y nada, no se me ocurre la forma. Si alguien me puede dar una intuición... Gracias.
  #2 (permalink)  
Antiguo 08/01/2014, 05:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

SELECT * FROM tabla WHERE la condición ORDER BY el orden LIMIT 1,1;

Esta consulta muestra el segundo registro segun el orden especificado y que cumple la condición. (LIMIT 1,1 empezando por el segundo, 0,1,2,... un registro, 1)

(Recuerda que si no especificas en que orden quieres los registros nada te asegura que el segundo registro sea el que esperas, incluso cada vez que lo consultes puede ser un registro distinto)

Por otro lado y en relación a mysql_result() mirate mysql_fetch_array()
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 08/01/2014 a las 06:11
  #3 (permalink)  
Antiguo 08/01/2014, 05:34
 
Fecha de Ingreso: diciembre-2013
Mensajes: 49
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Exacto, pero el LIMIT 1,1 depende de una variable dándole el valor de la opción elegida. Entonces ya no se como se haría.

Gracias y un saludo.
  #4 (permalink)  
Antiguo 08/01/2014, 05:53
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: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Cita:
Iniciado por pixonjr Ver Mensaje
Exacto, pero el LIMIT 1,1 depende de una variable dándole el valor de la opción elegida. Entonces ya no se como se haría.

Gracias y un saludo.
¿En Ajax o en MySQL?
__________________
¿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 08/01/2014, 05:55
 
Fecha de Ingreso: diciembre-2013
Mensajes: 49
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿En Ajax o en MySQL?
MySQL, paso la variable (opcion elegida en el SELECT OPTION) con ajax y la llevo al php, y ahi es donde tengo que hacer la consulta para mostrar el contenido de esa linea.
  #6 (permalink)  
Antiguo 08/01/2014, 05: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: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

No me respondes... o no estás siendo claro.

¿Solucionarlo en la sentencia en MySQL, o cómo enviar la variable por Ajax y procesarla en PHP?

Ajax y PHP son OFF TOPIC en este foro. Sólo se tratan temas de SQL y BBDD.

Si es tema de PHP, te muevo el post al foro correcto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/01/2014, 06:02
 
Fecha de Ingreso: diciembre-2013
Mensajes: 49
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Solucionarlo en MySQL.
  #8 (permalink)  
Antiguo 08/01/2014, 06:06
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
Cada consulta que se ejecuta debe desplazar el OFFSET del LIMIT.
Código MySQL:
Ver original
  1. ...
  2. LIMIT 0, 40
Código MySQL:
Ver original
  1. ...
  2. LIMIT 40, 40
Código MySQL:
Ver original
  1. ...
  2. LIMIT 80, 40

Eso, a menos que quieras levantar los 500 registros de un saque y paginarlos en la aplicación...

¿Cuál es exactamente la dificultad que tienes?

Entendamos que para poder luego de una selección en la aplicación de un determinado registro, debes de alguna manera haber mantenido o el ID del registro, es decir, su PK, o bien debes hacer exactamente lo mismo que ya dije:
Código MySQL:
Ver original
  1. LIMIT 2, 1.
Recuerda siempre que indice base de un LIMIT es 1 y no 0 como en los selectores de un formulario.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 08/01/2014 a las 06:20
  #9 (permalink)  
Antiguo 08/01/2014, 06:09
 
Fecha de Ingreso: diciembre-2013
Mensajes: 49
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Creo que no se me esta entendiendo...

Si de 500 lineas que tiene la tabla, 40 cumplen con la sentencia, como hago para mostrar el contenido de la linea numero 22, pasandole el valor 22 dentro de una variable (el valor de la variable ya se lo paso).
  #10 (permalink)  
Antiguo 08/01/2014, 06:10
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: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Cita:
Iniciado por pixonjr Ver Mensaje
Creo que no se me esta entendiendo...

Si de 500 lineas que tiene la tabla, 40 cumplen con la sentencia, como hago para mostrar el contenido de la linea numero 22, pasandole el valor 22 dentro de una variable (el valor de la variable ya se lo paso).
¿Entendiste la descripción anterior? ¿A qué me refiero con el "OFFSET"?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 08/01/2014, 06:14
 
Fecha de Ingreso: diciembre-2013
Mensajes: 49
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Entendiste la descripción anterior? ¿A qué me refiero con el "OFFSET"?
No.
  #12 (permalink)  
Antiguo 08/01/2014, 06:17
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: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Manual de referencia:
http://dev.mysql.com/doc/refman/5.0/es/select.html

Cita:
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr, ...
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'file_name']
[FROM table_references
[WHERE where_definition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_definition]
[ORDER BY {col_name | expr | position}
[ASC | DESC] , ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
Cita:
La cláusula LIMIT puede usarse para restringir el número de registros retornados por el comando SELECT. LIMIT tiene uno o dos argumentos numéricos, que deben ser enteros positivos (incluyendo cero).

Con dos argumentos, el primer argumento especifica el desplazamiento del primer registro a retornar. El desplazamiento del registro inicial es 0 (no 1):
Código MySQL:
Ver original
  1. mysql> SELECT * FROM table LIMIT 5,10;  # Retrieve rows 6-15

Por compatibilidad con PostgreSQL, MySQL también soporta la sintaxis LIMIT row_count OFFSET offset.

Para recibir todos los registros de un desplazamiento hasta el final del conjunto de resultados, puede usar algún número grande para el segundo parámetro. Ete comando recibe todos los registros desde el 96th hasta el último:
Código MySQL:
Ver original
  1. mysql> SELECT * FROM table LIMIT 95,18446744073709551615;

Con un argumento, el valor especifica el número de registros a retornar desde el comienzo del conjunto de resultados:
Código MySQL:
Ver original
  1. mysql> SELECT * FROM table LIMIT 5;     # Retrieve first 5 rows

En otras palabras, LIMIT n es equivalente a LIMIT 0,n.
El OFFSET es el primer valor e implica cuál es el desplazamiento que vas a usar desde el registro 1.
De hecho, cuando pones en tu sentencia
Código MySQL:
Ver original
  1. LIMIT 1, 1
estás omitiendo el primer registro devuelto por la consulta, porque el puntero pasa al segundo.
Para que te devuelva el primero debería ser
Código MySQL:
Ver original
  1. ...
  2. LIMIT 0, 1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 08/01/2014, 07:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE la condición

Esto da los 500 registros ordenados de forma no previsible

Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE la condición ORDER BY el orden

Esto da los 500 registros ordenado de forma previsible "el orden"

Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE la condición ORDER BY el orden LIMIT 21,1;

Esto da el registro 22 dentro de los 500 ordenados por "el orden".

Se entiende ahora?

Como metes ese 21 en la sentencia es cosa de php que como te han dicho es offtopic de este foro.

Seria mucho mas eficiente que del select option obtengas el id del registro no su ordinal.

Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE id=$id

es mucho más rápido que todo lo anterior.... uf se me ha escapado un poco de php sorry gnzsoloyo
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 09/01/2014 a las 01:54
  #14 (permalink)  
Antiguo 08/01/2014, 08:26
 
Fecha de Ingreso: diciembre-2013
Mensajes: 49
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Poniendo:

variable=valor pasado por el select option.

LIMIT variable,1.

Tambien funciona, por lo menos a mi.
  #15 (permalink)  
Antiguo 08/01/2014, 09:01
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: Consulta sobre: contador de filas, seleccionar fila y mostrarla.

Cita:
Iniciado por pixonjr Ver Mensaje
Poniendo:

variable=valor pasado por el select option.

LIMIT variable,1.

Tambien funciona, por lo menos a mi.
Sólo si usas MySQL 5.1.x o superior, y únicamente si la variable está dentro de un stored procedure o bien usas variables de usuario de MySQL.
Supongo que de eso estás hablando, porque MySQL no reconoce variables de los lenguajes de programació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)

Etiquetas: contador, fila, filas, php, select, sql, 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 12:58.