Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   ayuda con consulta mysql (https://www.clubdelphi.com/foros/showthread.php?t=79461)

gulder 07-07-2012 04:55:45

ayuda con consulta mysql
 
hola foro como están espero que bien, necesito ayuda en la siguiente consulta que no se por donde cogerla tengo la siguiente tabla periodos calificados que tiene los siguientes campos :

Código SQL [-]
id_calificar_periodo  
cedula  
id_alumno  
id_sede  
d_jornada  
id_grado  
ID_GRUPO  
id_asignatura  
id_periodo  
ano_lectivo  
id_logro_1  
nota1
id_logro_2  
nota2
id_logro_3
nota3
id_logro_4
nota4  
definitiva  
fallas

lo que guarda esta tabla son las notas de las asignaturas cada grado de un colegio por periodos, para cada asignatura se pueden guardar como máximo 4 notas para calcular la definitiva por periodo, para que me entiendan mejor seria algo mas o menos asi

Código SQL [-]
 MATEMÁTICAS ,NOTA1, NOTA2, NOTA3, NOTA4, DEFINITIVA, PERIODO 1
MATEMATICAS NOTA1, NOTA2, NOTA3, NOTA4, DEFINITIVA, PERIODO 2
MATEMATICAS NOTA1, NOTA2, NOTA3, NOTA4, DEFINITIVA, PERIODO 3
MATEMATICAS NOTA1, NOTA2, NOTA3, NOTA4, DEFINITIVA, PERIODO 4

la consulta que yo quiero implementar es traer las definitivas de cada asignatura, de los cuatro periodos y su promedios seria algo como :

Código SQL [-]
MATEMÁTICAS,  definitiva_periodo_1,  definitiva_periodo_2,  definitiva_periodo_3, definitiva_periodo_4, promedio_los_periodos

con la siguiente consulta solo alcanzo a traer la definitiva del primer periodo pero no se como traer las definitivas de todos los periodos osea los 4 y su promedio

Código SQL [-]
SELECT per1.id_asignatura,per1.definitiva
   
FROM asignaturas

LEFT JOIN periodos_calificados AS per1 ON per1.id_periodo = '1'


WHERE per1.id_alumno ='31479151' AND
      per1.id_sede ='24' AND
      per1.id_jornada ='0' AND
      per1.id_grado ='5' AND
      per1.ID_GRUPO ='1' AND
      per1.ano_lectivo = '2012' 
   
GROUP BY per1.id_asignatura

gracias de antemano guldergan

gulder 07-07-2012 07:03:51

hola foro como están, creo que logre una parte de la consulta pero no se si es la mas optima, pero me hace falta la parte del promedio de las definitivas pero hay si no se como sera

Código SQL [-]
SELECT asignaturas.nombre_asignatura, 
       perio1.definitiva as periodo_1, 
       perio2.definitiva as periodo_2, 
       perio3.definitiva as periodo_3, 
       perio4.definitiva as periodo_4 
   
FROM asignaturas,
     periodos_calificados as perio1,
     periodos_calificados as perio2,
     periodos_calificados as perio3,
     periodos_calificados as perio4

WHERE perio1.id_alumno ='31479151' AND
      perio1.id_sede ='24' AND
      perio1.id_jornada ='0' AND
      perio1.id_grado ='5' AND
      perio1.ID_GRUPO ='1' AND
      perio1.ano_lectivo = '2012' AND
      perio1.id_asignatura = asignaturas.id_asignatura AND
      perio1.id_periodo = '1'  AND
      

      perio2.id_alumno = perio1.id_alumno AND
      perio2.id_sede = perio1.id_sede AND
      perio2.id_jornada = perio1.id_jornada  AND
      perio2.id_grado = perio1.id_grado AND
      perio2.ID_GRUPO = perio1.ID_GRUPO AND
      perio2.ano_lectivo = perio1.ano_lectivo AND    
      perio2.id_asignatura = perio1.id_asignatura  AND
      perio2.id_periodo = '2' AND

      perio3.id_alumno = perio1.id_alumno AND
      perio3.id_sede = perio1.id_sede AND
      perio3.id_jornada = perio1.id_jornada  AND
      perio3.id_grado = perio1.id_grado AND
      perio3.ID_GRUPO = perio1.ID_GRUPO AND
      perio3.ano_lectivo = perio1.ano_lectivo AND   
      perio3.id_asignatura = perio1.id_asignatura  AND
      perio3.id_periodo = '3' AND

      perio4.id_alumno = perio1.id_alumno AND
      perio4.id_sede = perio1.id_sede AND
      perio4.id_jornada = perio1.id_jornada  AND
      perio4.id_grado = perio1.id_grado AND
      perio4.ID_GRUPO = perio1.ID_GRUPO AND
      perio4.ano_lectivo = perio1.ano_lectivo AND
      perio4.id_asignatura = perio1.id_asignatura AND
      perio4.id_periodo = '4' 
      

GROUP BY asignaturas.nombre_asignatura


Código SQL [-]
ARTISTICA  3.83  3.8  2.0  2.5
BIOLOGIA  2.56  4.5  1.8  3.8
CASTELLANO  3.4  3.0  3.8  3.5
EDUCACION FISICA  4.3  4.0  2.8  3.0
GEOMETRIA  3.07  2.1  2.8  3.4
INFORMATICA  4.9  1.6  4.8  3.7
INGLES  2.8  3.85  2.8  2.8
MATEMATICA  5.0  4.5  5.0  2.4
RELIGION  3.8  3.7  1.8  3.7
SOCIALES  5.0  4.0  2.8  3.5

no se como hacer lo del promedio de las 4 definitivas alguna idea saludos gulder gan

gulder 07-07-2012 07:22:50

Hola foro como andan espero que bien, ya creo haber terminado la consulta pero quiero q me digan si es optima o no mi solución espero sugerencias:


Código SQL [-]
SELECT asignaturas.nombre_asignatura, 
       perio1.definitiva as periodo_1, 
       perio2.definitiva as periodo_2, 
       perio3.definitiva as periodo_3, 
       perio4.definitiva as periodo_4, 
       TRUNCATE((perio1.definitiva+perio2.definitiva+perio3.definitiva+perio4.definitiva)/4,2) as definitiva
   
FROM asignaturas,
     periodos_calificados as perio1,
     periodos_calificados as perio2,
     periodos_calificados as perio3,
     periodos_calificados as perio4

WHERE perio1.id_alumno ='31479151' AND
      perio1.id_sede ='24' AND
      perio1.id_jornada ='0' AND
      perio1.id_grado ='5' AND
      perio1.ID_GRUPO ='1' AND
      perio1.ano_lectivo = '2012' AND
      perio1.id_asignatura = asignaturas.id_asignatura AND
      perio1.id_periodo = '1'  AND
      
      perio2.id_alumno = perio1.id_alumno AND
      perio2.id_sede = perio1.id_sede AND
      perio2.id_jornada = perio1.id_jornada  AND
      perio2.id_grado = perio1.id_grado AND
      perio2.ID_GRUPO = perio1.ID_GRUPO AND
      perio2.ano_lectivo = perio1.ano_lectivo AND    
      perio2.id_asignatura = perio1.id_asignatura  AND
      perio2.id_periodo = '2' AND

      perio3.id_alumno = perio1.id_alumno AND
      perio3.id_sede = perio1.id_sede AND
      perio3.id_jornada = perio1.id_jornada  AND
      perio3.id_grado = perio1.id_grado AND
      perio3.ID_GRUPO = perio1.ID_GRUPO AND
      perio3.ano_lectivo = perio1.ano_lectivo AND   
      perio3.id_asignatura = perio1.id_asignatura  AND
      perio3.id_periodo = '3' AND

      perio4.id_alumno = perio1.id_alumno AND
      perio4.id_sede = perio1.id_sede AND
      perio4.id_jornada = perio1.id_jornada  AND
      perio4.id_grado = perio1.id_grado AND
      perio4.ID_GRUPO = perio1.ID_GRUPO AND
      perio4.ano_lectivo = perio1.ano_lectivo AND
      perio4.id_asignatura = perio1.id_asignatura AND
      perio4.id_periodo = '4'

Casimiro Notevi 07-07-2012 08:14:39

Cita:

Empezado por gulder (Mensaje 436933)
Hola foro como andan espero que bien, ya creo haber terminado la consulta pero quiero q me digan si es optima o no mi solución espero sugerencias:

Hola, si la consulta devuelve los datos que necesitas y además es rápida, entonces sí es óptima :)


La franja horaria es GMT +2. Ahora son las 23:03:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi