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

Mostrar datos ordenados segun la nota media

Estas en el tema de Mostrar datos ordenados segun la nota media en el foro de Mysql en Foros del Web. Estoy haciendo una especie de ranking y me gustaría poder ordenar los resultados de una consulta según su nota media. Pero esto no acaba aquí. ...
  #1 (permalink)  
Antiguo 28/09/2006, 08:45
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Mostrar datos ordenados segun la nota media

Estoy haciendo una especie de ranking y me gustaría poder ordenar los resultados de una consulta según su nota media.

Pero esto no acaba aquí. Os explico:

Los exámenes están en la tabla examenes y cada uno de ellos memoriza la nota, fecha y autor del examen.

Entonces, genero una lista con un WHILE para que salga una lista de usuarios y su nota media. Para calcular la nota media:

Hago una consulta a la tabla EXAMENES con el parámetro de AVG(nota), para coger la media, y WHERE autor=$usuario, para que solo me coja las de dicho usuario.

Con esto consigo mostrar los usuarios con su respectiva nota media y todo bien. El resultado queda así:

Código:
Posicion | Centro | Nota media
------------------------------------
1           Colegio     8
2           Colegio     6.5
3           Colegio     9.2

El único inconveniente es que no consigo hacer que salga la lista con los usuarios ORDENADOS según su nota media (en orden descendente.. el que tenga mejor nota irá arriba)

He pensado que a lo mejor debería recoger los datos antes en una ARRAY, y luego mostrar sus datos de forma ordenada. Si se hace así, cómo sería? Si no es así... de qué forma podría hacerlo?

Gracias.
  #2 (permalink)  
Antiguo 28/09/2006, 08:49
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
escribe tu sql, una de esas ahi mismo puedes solucionar tu problema
  #3 (permalink)  
Antiguo 28/09/2006, 08:52
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Cita:
Iniciado por .php Ver Mensaje
escribe tu sql, una de esas ahi mismo puedes solucionar tu problema
¿?

Qué necesitas?
  #4 (permalink)  
Antiguo 28/09/2006, 08:56
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
Cita:
Iniciado por david_M_G Ver Mensaje
...
Hago una consulta a la tabla EXAMENES con el parámetro de AVG(nota), para coger la media, y WHERE autor=$usuario, para que solo me coja las de dicho usuario.
...
"select * from examenes ....."
  #5 (permalink)  
Antiguo 28/09/2006, 08:58
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Código PHP:
include ("config/index.php");
$query "SELECT * from usuarios where centro='$mi_cole'";
$result =  mysql_db_query ($dbname$query$link);
$num_fila 0;
$posicion 1;
while (
$row mysql_fetch_array ($result)) {

$alumno $row['nick'];


//Calculo la media
    
$query_media_alumno mysql_query("select AVG(nota) from examenes where autor='$alumno'");
    
    
$media_alumno_x mysql_result($query_media_alumno,0);
    
$media_alumno round ($media_alumno_x,1);


//muestro la lista.......................................


$posicion++;


  #6 (permalink)  
Antiguo 28/09/2006, 09:03
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
Código PHP:
$query_media_alumno mysql_query("select AVG(nota) from examenes where autor='$alumno' Order by nota desc"); 
espero que te funcione
  #7 (permalink)  
Antiguo 28/09/2006, 09:09
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Cita:
Iniciado por .php Ver Mensaje
Código PHP:
$query_media_alumno mysql_query("select AVG(nota) from examenes where autor='$alumno' Order by nota desc"); 
espero que te funcione
Pero a ver... eso fue lo que expuse en las dos primeras líneas de mi explicación, antes de decir "Pero esto no acaba aquí"

Si todo fuera eso, habría sido muy fácil pero... esa consulta solo la hago para obtener UN DATO que es la nota media, y no para mostrar la lista.

Espero haberme explicado. Agradezco tu respuesta.
  #8 (permalink)  
Antiguo 28/09/2006, 13:17
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Se puede hacer todo con una sóla consulta:

Código:
select avg(nota) as media,autor from examenes group by autor order by media desc;
__________________
Mi página personal: Julián Urbano
  #9 (permalink)  
Antiguo 28/09/2006, 14:02
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Cita:
Iniciado por caerolus Ver Mensaje
Se puede hacer todo con una sóla consulta:

Código:
select avg(nota) as media,autor from examenes group by autor order by media desc;
Mil gracias por tu tiempo. Ha funcionado a la perfección
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 09:39.