Foros del Web » Programando para Internet » PHP »

Duda con array en PHP

Estas en el tema de Duda con array en PHP en el foro de PHP en Foros del Web. Hola Amigos, Muchas gracias de antemano. Mi escenario Tengo que hacer consultas a una BD y buscar registros extensos por 3 años y luego someterlos ...
  #1 (permalink)  
Antiguo 05/04/2013, 08:20
 
Fecha de Ingreso: junio-2011
Mensajes: 80
Antigüedad: 12 años, 10 meses
Puntos: 8
Duda con array en PHP

Hola Amigos,

Muchas gracias de antemano.

Mi escenario
Tengo que hacer consultas a una BD y buscar registros extensos por 3 años y luego someterlos a diferentes fórmulas.

Cada fórmula usa tiempos diferentes, ejemplo, la 1ra fórmula calcularía el resultado de los registros en un tiempo de un años, la 2da debe calcular por 2 años, 3ra por 3 años, la 4ta por 2 años y medio, y asi hasta alrededor de 8 fórmulas calculando tiempos diferentes.

Mi Lógica de programa
La lógica que tengo implementada es buscar en la base de datos para la primera fómula en el tiempo de un año que es el que calcula esta 1ra.

Luego buscar de nuevo en la BD para la 2da fórmula por un tiempo de 2 años que es lo que esta 2da calcula.

Y asi sucecivamente.

Mi Problema
Cada vez que corro el programa se hace muy extenso bucar por 8 veces en la BD y someterlos a los cálculos de las fórmulas.

Demora mucho en dar el resultado. Si lo hago para solo una fórmulas es bastante rápido pero para 8 se complica el funcionamiento y no es lo óptimo que quiero dar.

Mi pregunta
Existe la posiblidad de porder hacer solo un query a la BD por 3 años. Que sus resultados queden almacenado en un array. Después cada fórmula busque dentro de ese array en el lapso de tiempo que necesita y realice sus cálculos ?

Muchas gracias a todos por su ayuda.
  #2 (permalink)  
Antiguo 05/04/2013, 08:30
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Duda con array en PHP

Aunque prolijo tu enunciado, estaría bueno que nos muestre un poco que resultados te traen las consultas para entender bien lo que pretendes hacer.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #3 (permalink)  
Antiguo 05/04/2013, 08:37
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Duda con array en PHP

Por poder puedes pero con tan pocos datos poco se puede ayudar.

Podrías poner una columna "tipo" en la propia consulta y suponiendo que estemos hablando de MySQL, puedes hacer un IF en el propio select y que según la condición que le digas ponga lo que gustes y luego puedes filtrar el array por los que tengan una columna con un nombre en concreto.

Ej. suponiendo una tabla clientes:
Código SQL:
Ver original
  1. SELECT nombre, apellidos, edad, IF(edad<18,'menor de edad','mayor de edad') 'tipo' FROM clientes

Ojo que no se si lo puse bien, pero es algo así.
  #4 (permalink)  
Antiguo 05/04/2013, 08:46
Bultack
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda con array en PHP

Si lo que quieres hacer es una única query e ir almacenando cada fila de la tabla en un array, pues lo que deberías hacer es la query y como la query la ejecutas dentro de un while puedes aprovechar el bucle para hacer que te almacene en un array los resultados y después operarlos a tu gusto.
  #5 (permalink)  
Antiguo 05/04/2013, 09:30
 
Fecha de Ingreso: junio-2011
Mensajes: 80
Antigüedad: 12 años, 10 meses
Puntos: 8
Respuesta: Duda con array en PHP

Hola amigos y muchas gracias por sus repsuesta.

La consulta a la BD puede devolver alrededor de 2000 registros.

ID | Nombre | Descripcion | Fecha | Cantidad

Mi programa basicamente lo que hace es buscar en la BD y con los resultados aplica fórmulas matemáticas por cada uno de ellos en un lapso de tiempo.

Para la formula 1 hago una consulta por 3 años

Código:
SELECT * FROM tabla WHERE Fecha BETWEEN 'Ebero-2009' AND 'DICIEMBRE-2012'
Con todos estos datos trabajo y aplico las fórmulas y muestro en pantalla los resultados.

Continúa mi programa con una segunda fórmula que es distinta a la primera.

Para la segunda fórmula lo que hago es buscar nuevamente en la BD pero en un lapso de tiempo de 2 años.

Código:
SELECT * FROM tabla WHERE Fecha BETWEEN 'Enero-2009' AND 'Diciembre-2011'
Y aplico la 2da fórmula a los datos regresados de la BD de la segunda consulta para dos años.

Asi sucesivamente por cada fórmula que tenga que son 8.

Lo que quería saber es si se puede realizar una sola consulta a la BD y obtener todos los datos de 3 años que son lo mas que buscaré y de ahi almacenar los resutlados en un array con acerca de 2000 registros.

Luego buscar dentro del array como busco en una BD.

Dame del array todos los datos que sean entre 'Enero-2010' y 'Diciembre-2012'

Esto lo puedo hacer en un array ?

Gracias una vez mas .....

Etiquetas: registro, resultados
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 10:50.