Código MySQL:
Ver original
Código MySQL:
Ver original
Código MySQL:
Ver original
Porque no me funciona?, saludos, y gracias de antemano
| |||
Subquery in LIMIT Hola quiero hacer esto en mysql, ya lo intente de las siguientes formas pero no he podido
Código MySQL:
Ver original
Código MySQL:
Ver original
Código MySQL:
Ver original Porque no me funciona?, saludos, y gracias de antemano Última edición por MyPHP; 26/01/2011 a las 21:41 |
| |||
Respuesta: Subquery in LIMIT Finalmente opte por hacer esto
Código MySQL:
Ver original Supongo que WHERE es mas lento que LIMIT, entonces me recomendarias, hacerlo en consulta separadas, estoy trabajando en php, entonces primeramente me recomiendas guardar en una variable PHP la consulta con COUNT y esa variable hacer una segunda consulta y meterla en SELECT * FROM inventario LIMIT $variablephp, 10, aunque aqui son dos consulta en lugar de una o sea tenga las siguiente dos opciones 1)UNA SOLO CONSULTA con subconsultas usando dos WHERE, como lo puse en este post 2)DOS CONSULTAS una para el count y guardarlo en una variable PHP, para meterlo en el LIMIT
Código PHP:
Ver original Gracias Que me recomiendas? Última edición por August; 27/01/2011 a las 10:01 |
| ||||
Respuesta: Subquery in LIMIT Que expliques dos cosas: Primero, que me aclares qué es lo que quieres obtener con la primera consulta. Es decir, ¿cuál es el sentido de toda esta operación? ¿Paginar de algún modo u obtener algún rango basado en qué? Segundo, ¿Eres la misma persona que inició el post? Porque yo le estaba respondiendo a MyPHP...
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Subquery in LIMIT jejeje, es que somos dos personas que estamos trabajando juntos, en un proyectito si es una paginacion, hecha con ajax, has de cuenta que le damos en borrar y se borra, pero a veces la paginacion ya no coincide con una de las capas, (eliminamos 10 campos y todavia aparecen las mismas paginas) entonces estamos haciendo esto, para que la paginacion funcione bien y ya con esto funciona todo bien pero tenemos la duda, que te plantee, que sera mas eficiente 2 consultas con un WHERE y un LIMIT o 1 consulta con una subconsulta de dos WHERE Pensando en que dos accesos a la Base de datos son mas gastolones y dos WHERE son mas gastolones que un WHERE y un LIMIT |
| |||
Respuesta: Subquery in LIMIT Disculpa la molestia, tambien yo queria aclarar el asunto y disculpen que los dos hayamos participado en el tema, si nos podrian contestar nuestra duda, la que expuso August Saludos y gracias de antemano |
| ||||
Respuesta: Subquery in LIMIT OK. De todos modos no has contestado mi pregunta. Esta operación: Cita: ¿qué valor representa el resultado? (count( * ) DIV 10) ¿La cantidad de registros a saltar? ¿La cantidad de registros por página? Los registros que se borraron y que deben ser reemplazados por otros? Según lo que me diga, te podríamos sugerir que más que una consulta o dos, o diferentes WHEREs, bien pudiera resolverse con una sentencia mejor elaborada. En bases de datos no existe el "haz de cuenta que...". Cada caso puede requerir una sintaxis distinta para ser óptima para el uso que se necesita resolver.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Subquery in LIMIT De la primera consulta
Código MySQL:
aqui le pongo el campo que se elimino, entonces solo me va a devolver los id menores a ese campo, Ver original Cuento los campos, si son 5 y los divido entre 10, donde 10 es el numero de elementos que se mustran por pagina, me va a devolver siempre un entero, porque DIV siempre devuelve enteros, entonces es 0, debe paginarme desde 0 si es 17 el eliminado entre 10, me da 1, entonces me pagina desde 1 y asi sucesivamente
Código MySQL:
Ver original Olvide que todavia el resultado, lo debo multiplicar por 10, para que @t valga 0,10,20,30,etc si uso esto y a paginar en bloques de 10, empezando de 0 al fin el id va a decirle desde que id debe empezar:
Código PHP:
o en el otro caso, la $variablephp va a tener el valor de @aVer original
Código MySQL:
Ver original Ahora con respecto a la eliminacion del campo id, se usa innoDB pero no usamos Foreign Keys, seria muy util "reorganizar el indice" o sea que el siguiente campo, ocupara el lugar del que se elimino, ya he leido que anteriormente habias dicho que esto no es conveniente, por las razones que explicaste, aunque si te fijas, usando esto, no hay problema, muestra 10 campos, sin importar si faltan 5 campos del 0 al 10 por ejemplo, aunque seria interezante por razones ilustrativas/didacticas saber como se reorganiza un indice
Código PHP:
Ver original Saludos |
| ||||
Respuesta: Subquery in LIMIT Simplificando: Ustedes tienen una aplicación que muestra datos paginados cada 10 registros. Eventualmente, el usuario puede borrar algunos de ellos, y lo que desean es que refresque la información de modo que si la acción se realiza en las páginas medias o inicial de las que se muestran, se vuelva a leer lo restante a partir de esa misma página. Bien. Hay varias formas de verlo, pero a mi entender están complicando demasiado un problema que parece muy sencillo. Suponiendo que la acción de borrado tiene efecto inmediato en la base: - Si la aplicación contiene un numero fijo de páginas, no hace falta consultar nada. Basta con multiplicar por diez el número de la página en que está el usuario en ese momento y pasarlo como parámetro a la sentencia que se construye. Ni siquiera requiere el uso de variables de usuario, sino simplemente construir la sentencia SQL con ese valor dado.
Código MySQL:
Ver original - Si el paginado no se mantiene, sino que sólo muestra el segmento consultado, pueden darse cuatro situaciones: 1) se borró el inicio de la tabla, 2) se borró el final de la tabla, 3) se borró el medio de la tabla, 4) Se borró toda la tabla. Para resolver todos estos casos se necesita nada más que cuando se leyera la tabla, se lean (aunque no se representen) la/s columna/s que sea/n la PK de la tabla. En el primero, segundo y tercer caso, se debe usar simplemente la PK que corresponde al primer registro restante.
Código MySQL:
En el cuarto caso se debe conservar momentáneamente en una variable el valor del último registro y pedir los mayores a:Ver original
Código MySQL:
Ver original Yo no le veo sentido, si se construye la sentencia en forma dinámica, en tener que usar sentencias más complejas que eso. Y menos usar dos para lograrlo. Ahora bien, si y sólo si el borrado de los registros no es físico en la base, puede requerirse un campo de estado en la tabla que determine si es accesible o no para lectura. ¿Es borrado físico o lógico?
__________________ ¿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: |