Foros del Web » Programando para Internet » PHP »

PROBLEMA CON LISTADO de MySQL

Estas en el tema de PROBLEMA CON LISTADO de MySQL en el foro de PHP en Foros del Web. Hola a todos!!! Bueno resulta que hago un listado de los ultimos 20 movimientos que tengo en una base de datos, utilizando en la consulta ...
  #1 (permalink)  
Antiguo 30/07/2003, 10:54
NHS
 
Fecha de Ingreso: junio-2002
Ubicación: Todos lados
Mensajes: 92
Antigüedad: 22 años, 5 meses
Puntos: 0
PROBLEMA CON LISTADO de MySQL

Hola a todos!!!

Bueno resulta que hago un listado de los ultimos 20 movimientos que tengo en una base de datos, utilizando en la consulta sql
... ORDER BY id DESC LIMIT 0, 20

Pero que pasa, el listado son varias columnas y se pueden ordenar por cada columna y que pasa se me altera la consulta sql
si me dan click en la columna nombre quedaria asi
... ORDER BY nombre ASC LIMIT 0,20
y lo mas probable es que esos nombres no correspondan a los ultimos 20 registros de la tabla.
espero que me entiendan se me hace dificil explicarlo.

Como puedo hacer para que por cualquier columna que me ordenen el listado me muestre los ultimos 20 registros?

Gracias
  #2 (permalink)  
Antiguo 30/07/2003, 11:06
 
Fecha de Ingreso: febrero-2003
Ubicación: Guanare
Mensajes: 90
Antigüedad: 21 años, 9 meses
Puntos: 0
Tienes una columna id =autoincrementar puedes hacerlo por ahí, ahora lo que no entiendo es para que necesitas ordernar todas las columnas, si con ordenar una los datos no se te alteran.
  #3 (permalink)  
Antiguo 30/07/2003, 11:15
NHS
 
Fecha de Ingreso: junio-2002
Ubicación: Todos lados
Mensajes: 92
Antigüedad: 22 años, 5 meses
Puntos: 0
Yo tengo algo asi
en la base de datos
id ( auto increment)
nombre
apellido
telefono

y tengo un .php listando los ultimos 20 registros para eso hago
SELECT * FROM personal ORDER BY id DESC LIMIT 0, 20

pero a su vez los usuarios tienen que poder ordenarlo por la columna nombre o apellido, etc. etc.

Entonces cuando hacen click en nombre, cambio la consulta sql
SELECT * FROM personal ORDER BY nombre ASC LIMIT 0,20

y como resulta si me los ordena alfabeticamente, pero no a los ultimos 20 registros.
si no los primeros 20 del orden alfabetico.
me explico??
  #4 (permalink)  
Antiguo 30/07/2003, 13:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Es que es lo que le mandas hacer.

Aqui las opciones que tienes son:

- Almacenar el resultado de los ultimos 20 por id en un array y ordenar el array.

- Almacenar los id de los 20 ultimos en una cadena separada por comas y realizar la consulta de ordenada por el campo, pero añadiendo un WHERE id IN (la cadena). Implica dos consultas.

- Usar una subconsulta. En MySQL no estan disponibles hasta la version 4.1 de MySQL. Pero en el manual te dice como puees hacer estas subconsultas tipo IN (SELECT ... ): http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 30/07/2003, 13:52
NHS
 
Fecha de Ingreso: junio-2002
Ubicación: Todos lados
Mensajes: 92
Antigüedad: 22 años, 5 meses
Puntos: 0
gracias, hice la opcion 1 primero hago un array de los ultimos 20 registros y despues hago un select pasandoles los ids

gracias!!!!!
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:39.