Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Mr.Blue en 29 Julio 2011, 00:14 am



Título: duda con consulta sql
Publicado por: Mr.Blue en 29 Julio 2011, 00:14 am
Hola gente tengo un problema con una consulta que quiero hacer y no me sale

tengo las siguientes tablas

alumno
-nombre
-apellido
id_alumno
id_curso

curso
-materia
-id_curso

nota

-nota
id_nota
id_alumno

y lo que quier hacer es listar los alumnos por materia y mostrar  el promedio mayor por materia

Alguna idea como hacerlo

logre hacer esto

Código
  1. SELECT a.nombre AS alumno,avg(n.nota)AS promedio
  2. FROM alumno AS a
  3. INNER JOIN curso AS c ON(c.id_curso=a.id_curso)
  4. INNER JOIN nota AS n ON(n.id_alumno=a.id_alumno)
  5. WHERE a.id_alumno IN (SELECT a2.id_alumno FROM alumno AS a2
  6. INNER JOIN nota AS n
  7. ON (n.id_alumno = a2.id_alumno)
  8. GROUP BY a2.id_alumno
  9. HAVING avg (n.nota)>7)
  10. GROUP BY a.nombre

pero me muestra 1 alumno de 1 materia y su promedio
alguna idea?
gracias



Título: Re: duda con consulta sql
Publicado por: Beakman en 4 Agosto 2011, 02:06 am
Citar
y lo que quier hacer es listar los alumnos por materia y mostrar  el promedio mayor por materia

Si es que te entendí bien eso solo lo hacés con dos consultas, ¿ por qué ? porque en la primera parte: "mostrar los alumnos por materia" mostras muchos alumnos por materia, en la segunda: "el promedio mayor por materia" es un solo dato por materia, en una tabla no podrías encajar esos datos de esa forma.
Lo que sí podés hacer es algo como: mostrar la cantidad de alumnos por materia y el promedio máximo.