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

sacar promedio en subconsulta

Estas en el tema de sacar promedio en subconsulta en el foro de Mysql en Foros del Web. que tal forer@s tengo estas dos tablas: tabla nombres id | nombre 1 | uno 2 | dos y tabla notas id | nota | ...
  #1 (permalink)  
Antiguo 11/03/2012, 13:54
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
sacar promedio en subconsulta

que tal forer@s

tengo estas dos tablas:

tabla nombres

id | nombre
1 | uno
2 | dos

y tabla notas

id | nota | id_nombre
1 | 7.......| 1
2 | 9.......| 1
3 | 6.......| 2
4 | 8.......| 2
5 | 9.......| 2

y quiero sacar en una consulta los promedios de uno y dos, el resultado seria:

uno -> promedio = 8 (7+9=16/2)
dos -> promedio = 7.6 (6+8+9=23/3)

trate de hacer lo siguiente:

SELECT nom.*, (SELECT AVG(nt.nota) AS promedio FROM notas nt WHERE nt.id_nombre=nom.id) FROM nombres nom

pero al ejecutarlo en mi codigo php me sale que no sabe que es promedio

como seria la consulta??

gracias
  #2 (permalink)  
Antiguo 11/03/2012, 15:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: sacar promedio en subconsulta

Código MySQL:
Ver original
  1. SELECT nom.*, AVG(nt.nota) promedio
  2. FROM nombres nomLEFT JOIN notas nt ON nom.id = nt.id_nombre
  3. GROUP BY nom.id
El error que te marca es porque el alias de un campo dentro de una subconsulta que está puesta como columna, no es accesible por fuera de los paréntesis.
Te corrijo la consulta completa porque no puedes poner una consulta con una función agrupada sin poner el GROUP BY, a menos que el resultado de la función sea el único dato devuelto, que no es tu caso.
Tips:
1) Te conviene estudiar un poco más del uso de funciones agregadas y el GROUP BY.
2) Trata de no usar subconsultas dentro de los campos de SELECT, porque obligan al MySQL a ejecutar la subconsulta por cada registro devuelto por la principal... que podrían ser muchos.
3) El orden de los factores altera el producto en los JOIN. Si quieres los promedios de notas de las personas, primero debe ir la tabla nombres.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/03/2012, 18:11
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: sacar promedio en subconsulta

gracias gnzsoloyo

si definitivamente tengo que ponerme estudiar

Etiquetas: php, promedio, select, subconsulta, tabla
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 14:39.