Foros del Web » Programando para Internet » PHP »

Que es gasta más recursos, arrays o consultas?

Estas en el tema de Que es gasta más recursos, arrays o consultas? en el foro de PHP en Foros del Web. Hola a todos, gracias por leer esta pregunta. La cuestión es que he logrado traer registros de la base de datos MySql con las definitivas ...
  #1 (permalink)  
Antiguo 28/11/2012, 21:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 77
Antigüedad: 15 años, 5 meses
Puntos: 8
Que es gasta más recursos, arrays o consultas?

Hola a todos, gracias por leer esta pregunta.
La cuestión es que he logrado traer registros de la base de datos MySql con las definitivas ya calculas de cada materia, de cada periodo, de cada alumno de un grupo (sistema para colegio). Eso da más de dos mil registros (por ahora) en los que obviamente se repiten los datos del alumno (id, Nombre, Apellido, NoMatricula, etc), también se repiten los datos de la materia, ya que son cuatro periodos; y cada materia tiene su definitiva.

He aquí un pantallazo:


Necesito hacer los reportes anuales, y quiero evitar que se demore una eternidad haciendo los cálculos. He intentado pasar esos datos a un array asociativo que a su vez tenga otros arrays que contengan otros mas, que no repita los datos de esa manera tan absurda, pero lo veo muy complicado, parece que tengo que hacer miles de recorridos foreach, sin contar con que después tendré que dibujar tablas y más cosas.

La otra opción es hacer una consulta y recorrerla, para a su vez hacer otras consultas y hacer los cálculos de por cada materia, serían muchas consultas a la base de datos, pero es más entendible para hacer un array asociativo organizado.

Qué me dicen, que técnica usan ustedes? ¿hay alguna manera de poner los miles de registros en un array asociativo organizado si que se vuelva un sancocho? ¿Qué gasta menos recursos?

Muchas gracias por compartir esa sabiduría. Dios los bendiga.
  #2 (permalink)  
Antiguo 28/11/2012, 22:06
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Que es gasta más recursos, arrays o consultas?

Yo creo que las consultas gastan mas recursos, si si, pero tambien si haces miles de cosas con arrays, jeje gastará.
La solucion, optimizar tu consulta.

Podrías poner acá las tablas y la consulta que estas haciendo?
__________________
la la la
  #3 (permalink)  
Antiguo 29/11/2012, 04:38
 
Fecha de Ingreso: noviembre-2008
Mensajes: 77
Antigüedad: 15 años, 5 meses
Puntos: 8
Respuesta: Que es gasta más recursos, arrays o consultas?

No quiero ponerlos a analizar mi consulta, tengo otras preguntas que me gustarían que contestaran en vez de eso, sin embargo aquí está:

Cita:
SELECT idAlumno, NoMatriculaAlum, NombresAlum, ApellidosAlum, SexoAlum, UsuarioAlum,
NombreMateria, AliasMateria, idMaterGrupo, idMateria, idProfesor, PeriodoCompet,
CreditosMater, OrdenMater, sum( ValorCompetencia ) DefMateria
FROM(
SELECT ga.idALumno, a.NoMatriculaAlum, a.NombresAlum, a.ApellidosAlum, a.SexoAlum, a.UsuarioAlum,
m.NombreMateria, m.AliasMateria, mg.idMaterGrupo, mg.idMateria, mg.idProfesor,
mg.CreditosMater, mg.OrdenMater, c.PeriodoCompet, c.Competencia, c.idCompet, i.Indicador, i.PorcIndic,
sum( ((c.PorcCompet/100)*((i.PorcIndic/100)*n.Nota)) ) ValorCompetencia

FROM tbalumnos a, tbgrupoalumnos ga, tbmaterias m, tbmateriagrupo mg,
tbcompetencias c, tbindicadores i, tbnotas n

WHERE a.idAlum=ga.idAlumno and ga.Estado=1
and ga.idGrupo=10 and m.idMateria=mg.idMateria
and mg.idGrupo=ga.idGrupo and c.MateriaGrupoCompet=mg.idMaterGrupo
and i.CompetenciaIndic=c.idCompet and n.idIndic=i.idIndic
and n.idAlumno=a.idAlum and n.idAlumno=ga.idAlumno and c.PeriodoCompet=ga.idPeriodo
group by idAlumno, i.CompetenciaIndic
)r group by idAlumno, idMaterGrupo, PeriodoCompet
¿Hay alguna forma de hacer los dos SUM sin hacer dos SELECT?
Yo quisiera que me dijeran cómo hago para pasar los datos que me trae esto a un array asociativo que a su vez tenga arrays dentro, que este asu vez tiene otros array, para probar el rendimiento jeje ¿Me pueden ayudar por fa? Gracias ;)
  #4 (permalink)  
Antiguo 29/11/2012, 06:25
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Que es gasta más recursos, arrays o consultas?

a ver podes poner un :

echo '<pre>';
print_r($tu_array);
exit;


y poner acá un trozo de ese array, como para verlo, y un ejemplo de como lo queres.
__________________
la la la
  #5 (permalink)  
Antiguo 29/11/2012, 07:42
 
Fecha de Ingreso: noviembre-2008
Mensajes: 77
Antigüedad: 15 años, 5 meses
Puntos: 8
Respuesta: Que es gasta más recursos, arrays o consultas?

No conocía el <pre> gracias:

Código:
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [idAlumno] => 255
                    [NoMatriculaAlum] => 
                    [NombresAlum] => LUIS RICARDO
                    [ApellidosAlum] => ANGEL JAIMES
                    [SexoAlum] => M
                    [UsuarioAlum] => 18
                    [NombreMateria] => INFORMÃTICA
                    [AliasMateria] => INFORMAT
                    [idMaterGrupo] => 6
                    [idMateria] => 30
                    [idProfesor] => 1
                    [PeriodoCompet] => 1
                    [CreditosMater] => 3
                    [OrdenMater] => 6
                    [DefMateria] => 90.00000000
                )

            [1] => Array
                (
                    [idAlumno] => 255
                    [NoMatriculaAlum] => 
                    [NombresAlum] => LUIS RICARDO
                    [ApellidosAlum] => ANGEL JAIMES
                    [SexoAlum] => M
                    [UsuarioAlum] => 18
                    [NombreMateria] => MATEMÃTICAS
                    [AliasMateria] => MATEMÃTICAS
                    [idMaterGrupo] => 9
                    [idMateria] => 29
                    [idProfesor] => 4
                    [PeriodoCompet] => 1
                    [CreditosMater] => 4
                    [OrdenMater] => 7
                    [DefMateria] => 85.27500000
                )

            [2] => Array
                (
                    [idAlumno] => 255
                    [NoMatriculaAlum] => 
                    [NombresAlum] => LUIS RICARDO
                    [ApellidosAlum] => ANGEL JAIMES
                    [SexoAlum] => M
                    [UsuarioAlum] => 18
                    [NombreMateria] => RELIGIÓN
                    [AliasMateria] => RELIGIÓN
                    [idMaterGrupo] => 159
                    [idMateria] => 22
                    [idProfesor] => 9
                    [PeriodoCompet] => 1
                    [CreditosMater] => 4
                    [OrdenMater] => 1
                    [DefMateria] => 92.80000000
                )
...

Yo quiero Un array con los datos del alumno y que cada alumno tenga otro array con los 4 periodos, y cada periodo sería un array con las materias y sus definitivas, mas o menos así:

Código:
Array
(
    [0] => Array
        (
            [idAlumno] => 255
            [NombresAlum] => LUIS RICARDO
            [ApellidosAlum] => ANGEL JAIMES
            [SexoAlum] => M
            [UsuarioAlum] => 18
            
            [Periodos] => Array
                (
                    [0] => Array
                        (
                           [Periodo] => 1
                           [Materias] => Array
                              (
                                   [0] => Array
                                        (
                                         [NombreMateria] => INFORMÃTICA
                                         [AliasMateria] => INFORMAT
                                         [idMateria] => 30
                                         [CreditosMater] => 3
                                         [OrdenMater] => 6
                                         [DefMateria] => 90.0
                                        )
                                   [1] => Array
                                        (
                                         [NombreMateria] => MATEMÁTICAS
                                         [AliasMateria] => MATEM
                                         [idMateria] => 33
                                         [CreditosMater] => 3
                                         [OrdenMater] => 5
                                         [DefMateria] => 70.0
                                        )
                                   [2] => Array
                                        (
                                         [NombreMateria] => FISICA
                                         [AliasMateria] => FISI
                                         [idMateria] => 34
                                         [CreditosMater] => 4
                                         [OrdenMater] => 3
                                         [DefMateria] => 80.0
                                        )
                              )
                       )
                    [1] => Array
                        (
                           [Periodo] => 2
                           [Materias] => Array
                              (
                                   [0] => Array
                                        (
                                         [NombreMateria] => INFORMÃTICA
                                         [AliasMateria] => INFORMAT
                                         [idMateria] => 30
                                         [CreditosMater] => 3
                                         [OrdenMater] => 6
                                         [DefMateria] => 100.0
                                        )
                                   [1] => Array
                                        (
                                         [NombreMateria] => MATEMÁTICAS
                                         [AliasMateria] => MATEM
                                         [idMateria] => 33
                                         [CreditosMater] => 3
                                         [OrdenMater] => 5
                                         [DefMateria] => 80.0
                                        )
                                   [2] => Array
                                        (
                                         [NombreMateria] => FISICA
                                         [AliasMateria] => FISI
                                         [idMateria] => 34
                                         [CreditosMater] => 4
                                         [OrdenMater] => 3
                                         [DefMateria] => 99.0
                                        )
                              )
                       )
                     
                )
    [2] => Array
        (
            [idAlumno] => 256
            [NombresAlum] => MIGUELITO
            [ApellidosAlum] => MARQUEZ SANCHEZ
            [SexoAlum] => M
            [UsuarioAlum] => 14
            
            [Periodos] => Array
                (
                    [0] => Array
...

Bueno, más o menos eso es lo que creo que necesito, pues tengo que hacer una tabla por cada alumno que muestre hacia abajo las materias (sin repetirse y en la izquierda) Los encabezados serían MATERIAS, PER1, PER2, PER3, PER4, DEFINITIVA.

Cómo puedo lograr un array de estos, y ¿estoy bien en mi estrategia? Veo que aun en este array toca estar repitiendo los nombres de las materias, así que no sé si sea correcto.

Muchas gracias.

Etiquetas: mysql, reportes
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 15:25.