Ver Mensaje Individual
  #6 (permalink)  
Antiguo 26/03/2009, 07:36
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Group by order by sql

Cita:
Hola a todods

Tengo una base de datos con 3 personas y esas 3 personas han hecho cada una varias carreras. Quiero uqe una consulta muestre tan solo el mejor tiempo de cada persona. He probado lo siguiente pero no funciona:

SELECT nombre, tiempo FROM corredores GROUP BY nombre ORDER BY tiempo

asi me da reesutlados, epro me da el primer registro de la base de datos

SELECT nombre, tiempo FROM corredores ORDER BY tiempo GROUP BY nombre Y asi da error.

Alguna idea?
Según entiendo, tiempo y nombre se encuentran en la tabla corredores, y cada corredor ha hecho varias carreras. para cada corredor necesitas el mejor tiempo de todos los datos registrados.

Código MySQL:
Ver original
  1. mysql> create table corredores(nombre text, tiempo float);
  2. Query OK, 0 rows affected (0.08 sec)
  3.  
  4. mysql> insert into corredores values('daniel',22.5);
  5. Query OK, 1 row affected (0.00 sec)
  6.  
  7. mysql> insert into corredores values('daniel',22.6);
  8. Query OK, 1 row affected (0.00 sec)
  9.  
  10. mysql> insert into corredores values('daniel',22.9);
  11. Query OK, 1 row affected (0.00 sec)
  12.  
  13. mysql> insert into corredores values('daniel',23.2);
  14. Query OK, 1 row affected (0.00 sec)
  15.  
  16. mysql> insert into corredores values('daniel',21.2);
  17. Query OK, 1 row affected (0.00 sec)
  18.  
  19. mysql> insert into corredores values('daniel',19.23);
  20. Query OK, 1 row affected (0.00 sec)
  21.  
  22. mysql> insert into corredores values('diego',18.23);
  23. Query OK, 1 row affected (0.02 sec)
  24.  
  25. mysql> insert into corredores values('diego',16.2);
  26. Query OK, 1 row affected (0.00 sec)
  27.  
  28. mysql> insert into corredores values('diego',17.2);
  29. Query OK, 1 row affected (0.00 sec)
  30.  
  31. mysql> select nombre, min(tiempo) as mejor_tiempo from corredores group by nombre;
  32. +--------+--------------------+
  33. | nombre | mejor_tiempo |
  34. +--------+--------------------+
  35. | daniel |       19.23 |
  36. | diego  |        16.2 |
  37. +--------+-------------+
  38. 2 rows in set (0.03 sec)

Puede ser que estes planteando mal la pregunta, por que esta sentencia si genera un resultado.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming