Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/11/2012, 12:00
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Ordenar consulta sql. Simple ?

Hola manya:

Esta consulta es una de las que más hemos tratado en este foro... te recomiendo que para futuras ocasiones utilices la herramienta de búsqueda del foro y trates de encontrar algún otro post donde se haya tratado un tema similar...

No das información acerca de la estructura de tus tablas lo cual es un problema... ¿cómo determinas cuál es la última noticia para un administrador?... supongo que por el ID_NOTI (siempre y cuando este sea un número autoincremental)... ¿Tienes algún otro campo fecha o algo parecido para determinar cuál es la última noticia? Mucho ojo con estos detalles... es importante que no los olvides mencionar cuando hagas alguna pregunta. También es conveniente que nos pongas algunos datos de ejemplo, siempre será más fácil visualizar qué es lo que necesitas partiendo de esta información...

Tratando de jugar al adivino y a partir de la información que pones en tu consulta, creo que tienes algo como esto en tus tablas noticias y admin:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM noticias;
  2. +---------+--------+----------+
  3. | id_noti | noti   | id_admin |
  4. +---------+--------+----------+
  5. |       1 | noti 1 |        1 |
  6. |       2 | noti 2 |        2 |
  7. |       3 | noti 3 |        1 |
  8. |       4 | noti 4 |        2 |
  9. |       5 | noti 5 |        3 |
  10. |       6 | noti 6 |        3 |
  11. |       7 | noti 7 |        1 |
  12. |       8 | noti 8 |        2 |
  13. +---------+--------+----------+
  14. 8 rows in set (0.03 sec)
  15.  
  16. mysql> SELECT * FROM admin;
  17. +----------+------------+
  18. | id_admin | nombre     |
  19. +----------+------------+
  20. |        1 | admin uno  |
  21. |        2 | admin dos  |
  22. |        3 | admin tres |
  23. +----------+------------+
  24. 3 rows in set (0.00 sec)

Hay muchas formas de obtener el último registro para cada elemento agrupado, por lo general implica el uso de la función MAX... una forma para obtener lo que creo que necesitas sería así:

Código MySQL:
Ver original
  1. mysql> SELECT n.id_noti, n.noti, a.nombre
  2.     -> FROM noticias n
  3.     -> INNER JOIN admin a  ON n.id_admin = a.id_admin
  4.     -> INNER JOIN ( SELECT id_admin, MAX(id_noti) max_id_noti
  5.     ->              FROM noticias GROUP BY id_admin) n2
  6.     ->  ON n.id_admin = n2.id_admin AND n.id_noti = n2.max_id_noti
  7.     -> ORDER BY n.id_noti DESC;
  8. +---------+--------+------------+
  9. | id_noti | noti   | nombre     |
  10. +---------+--------+------------+
  11. |       8 | noti 8 | admin dos  |
  12. |       7 | noti 7 | admin uno  |
  13. |       6 | noti 6 | admin tres |
  14. +---------+--------+------------+
  15. 3 rows in set (0.00 sec)

No recomiendo hacer las uniones en el FROM-WHERE, como lo estás haciendo... sino que utilizo siempre JOIN's...

Observa la subconsulta marcada como n2 ahí empleo la función MAX para determinar la última noticia de cada administrador... esta información la utilizo para filtrar una consulta equivalente a la que tu estás haciendo.

Dale un vistazo para ver si es lo que necesitas.

Saludos
Leo.