Ver Mensaje Individual
  #8 (permalink)  
Antiguo 28/08/2010, 16:14
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: problema con consulta sql sencilla

Hola,

Cita:
Iniciado por margaro Ver Mensaje
Solo una abservacion a la consulta de HackmanC, yo ejecutaria la clausula group by asi:

GROUP BY
a.dni

ya que cabe la posibilidad de que dos alumnos se llamen igual, por lo cual la nota maxima seria sacada de entre los dos alumnos que tienen el mismo nombre...
Tienes toda la razón, aunque en ese caso dependiendo de la base de datos que esté usando (que al final no se sabe) debería escribirse así:

Código MySQL:
Ver original
  1.   a.id,
  2.   a.nombre,
  3.   MAX(n.nota) MaximaNota
  4.   alumnos a
  5.   left join notas n on a.dni = n.dni
  6.   a.id, a.nombre

Cuando se usa GROUP BY con una función de agregado, todos los campos que no estén en una función de agregado deben aparecer en la clausula GROUP BY. Es decir a.nombre debe de aparecer allí forzosamente si está en la clausula SELECT.

Saludos,

ps:

MySQL funciona diferente a algunas otras bases de datos en la clausula GROUP BY como Microsoft SQL Server y postgreSQL, en MySQL no es obligatorio poner a.nombre o los campos que no tengan una función de agregado.