Ver Mensaje Individual
  #11 (permalink)  
Antiguo 08/05/2006, 15:49
all-ill
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 11 meses
Puntos: 22
Lo que dice chiviwalker
Cita:
select ci_be, sum(monto_oc_dls) as sum_monto from solicitud WHERE fecha_sys BETWEEN '$fecha_ant' AND '$fecha_hoy' group by ci_be HAVING monto_oc_dls >= 5000
debería funcionar y si sólo necesitas los monto_oc_dls mayores de 4999 creo que es la manera más correcta y óptima de hacerlo.

En cuanto a la demora de las consultas, generalmente son bastante rápidas. Pero se puede notar una demora cuando el número de registros que debe consultar es elevado (no puedo especificar una cantidad fija para que eso ocurra, pero se sobreentiende que si ha de consultar 50000 registros puede demorar más que si únicamente consulta 3000, para obtener más información sobre el tiempo que tarda en ejecutar una consulta mysql dispone de algunos métodos, algunos de ellos hacen necesario el uso de la consola de mysql.)

Para más info sobre este tema busca "mysql benchmark" o accede a http://dev.mysql.com/tech-resources/benchmarks/


Para la actualización:

se podría intentar algo parecido a lo siguiente (ten en cuenta que no he comprobado su funcionamiento y no puedo asegurar que funcione. Antes de probarlo realiza una copia de seguridad de la base de datos.) No sé si la sintaxis empleada en la consulta es correcta o no es posible usar tal anidación de consultas y referencias a tablas con el método UPDATE. Si se puede realizar esta consulta, estoy seguro que existen formas de simplificar la consulta (con join, etc.)

Cita:
UPDATE transac_inu

SET sum_monto = (
SELECT sum_monto_solicitud FROM (
SELECT ci_be, SUM(monto_oc_dls) AS sum_monto_solicitud
FROM solicitud
WHERE fecha_sys BETWEEN '$fecha_ant' AND '$fecha_hoy'
GROUP BY ci_be
HAVING monto_oc_dls >= 5000
) AS t1)

WHERE transac_inu.ci_be = t1.ci_be
Puede parecer complicado pero una vez funcione, puedes ver el potencial del uso de sql.

En caso de que la consulta te funcione (tal cual o modificada), para realizar un Insert solo hay que cambiar cuatro cosas.

Seguro que Cluster puede darte buenos consejos sobre este tema.

Disculpad que me haya extendido un poco en el texto.