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

Suma de datos uniendo varias tablas

Estas en el tema de Suma de datos uniendo varias tablas en el foro de Mysql en Foros del Web. Hola muy buenas foreros, A ver se me poden echar una mano que llevo todo el día con esto y no logro sacarlo , necesito ...
  #1 (permalink)  
Antiguo 23/09/2013, 16:45
 
Fecha de Ingreso: abril-2012
Ubicación: Quito
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Suma de datos uniendo varias tablas

Hola muy buenas foreros,

A ver se me poden echar una mano que llevo todo el día con esto y no logro sacarlo , necesito que se me sume los promedios de la tabla promedios en una sola suma de todas las materias complementarias de la tabla malla cuya la materia principal sea matemática de la tabla malla, siendo las materias de la tabla promedio las misma que materias complementarias de la tabla malla, usando la tabla alumno para identificar al alumno por codigo y la malla por ano de estudio.

Ahi vos dejo una imagen de como tengo las tablas.



Lo intento asi y me suma los valores lo que no logro es asignarlo a la materia principal.

SELECT SUM(p.promedio_anual) AS promediopt, p.materia, p.codigo, a.Codigo as codigo FROM promedios p, alumnos a WHERE a.Codigo = p.codigo AND p.codigo ='1' AND p.materia IN ('MATEMATICA','PENSAMIENTO LOGICO','TRIGONOMETRIA')

Desde ya muchas gracias.

Última edición por buybetter; 23/09/2013 a las 19:00
  #2 (permalink)  
Antiguo 24/09/2013, 04:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Suma de datos uniendo varias tablas

Código MySQL:
Ver original
  1. SELECT a.Codigo as codigo,
  2.              a.anio_estudio,
  3.              m.materia_principal,
  4.              p.materia,
  5.              SUM(p.promedio_anual) AS promediopt
  6. FROM (alumnos a INNER JOIN promedios p ON a.codigo=p.codigo)
  7.           INNER JOIN m.malla ON m.anio_estudio=a.anio_estudio
  8.                          AND p.materia=m.materias_complementarias
  9. WHERE m.materia_principal='MATEMATICA'
  10. GROUP BY a.Codigo as codigo,
  11.              a.anio_estudio,
  12.              m.materia_principal,
  13.              p.materia;

Código MySQL:
Ver original
  1. SELECT a.Codigo as codigo,
  2.              a.anio_estudio,
  3.              m.materia_principal,
  4.              SUM(p.promedio_anual) AS promediopt
  5. FROM (alumnos a INNER JOIN promedios p ON a.codigo=p.codigo)
  6.           INNER JOIN m.malla ON m.anio_estudio=a.anio_estudio
  7.                          AND p.materia=m.materias_complementarias
  8. WHERE m.materia_principal='MATEMATICA'
  9. GROUP BY a.Codigo as codigo,
  10.              a.anio_estudio,
  11.              m.materia_principal;

Tu estructura de tablas no és muy correcta.

Te recomiendo lo siguiente:

AniosEstudio
idAnio
anio

(1,"2012-2013")

Alumnos
idAlumnos
Nombre
...

Materias
idMat
materia

Matricula
idAlumnos
idAnio
idMat

MateriasComp
idMComp
materiaComp

RelMatMatComp
idRMMC
idMat
idMComp
idAnio
(esta seria tu Malla)

Notas
idNota
idAlumnos
idAnio
idRMMC
fecha
nota
...

La tabla promedios es un error puesto que sus datos son un calculo sobre las notas, nunca guardes un calculo si no el dato original.

12.2.7.1. JOIN Syntax
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 24/09/2013 a las 05:10

Etiquetas: sql, suma, tabla, tablas
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 23:58.