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

Insertar o Actualizar según fecha

Estas en el tema de Insertar o Actualizar según fecha en el foro de Mysql en Foros del Web. Hola compañeros, necesito de su ayuda con unas consultas en mysql. Tengo una tabla compras donde ingreso una cantidad de productos en kilos y el ...
  #1 (permalink)  
Antiguo 01/09/2015, 18:11
 
Fecha de Ingreso: octubre-2011
Mensajes: 132
Antigüedad: 12 años, 6 meses
Puntos: 4
Insertar o Actualizar según fecha

Hola compañeros, necesito de su ayuda con unas consultas en mysql.

Tengo una tabla compras donde ingreso una cantidad de productos en kilos y el precio, ahora lo que hago es que lo que se compré me lo vaya sumando, y lo muestre por mes, eso ya lo tengo de esta manera

Código MySQL:
Ver original
  1. SELECT P.*, C.* , YEAR(fecha) anio, MONTH(fecha) mes, COUNT(*) registros, SUM(importe) as total
  2. FROM productos P INNER JOIN compras C ON C.id_producto = P.id
  3. GROUP BY anio, mes

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las [URL="http://www.forosdelweb.com/f86/importante-reglas-para-postear-foros-bases-datos-1040766/"]normas del foro[/URL], por favor.
Ahora lo que deseo es que en otra tabla digamos una que se llama comprasxmes, se vaya guardando el total de la compras por mes si por ejemplo recién mañana compro algo se inserte y si después vuelvo a comprar mas productos se actualicé. digamos los campos de esta tabla serán:

id - total - fecha

si alguien pudiera guiarme en esto

Última edición por stevens82; 04/09/2015 a las 00:14
  #2 (permalink)  
Antiguo 04/09/2015, 00:49
 
Fecha de Ingreso: octubre-2011
Mensajes: 132
Antigüedad: 12 años, 6 meses
Puntos: 4
Respuesta: Insertar o Actualizar según fecha

Bueno ya logre hacer algo de lo que necesitaba digamos hacer un insert si es que no existe el mes en que se van agregando las compras y actualizar (No como lo necesito) si ya se hizo la compra en ese mes:

Código MySQL:
Ver original
  1. SELECT YEAR(fecha) anio, MONTH(fecha) mes
  2.     FROM comprames WHERE YEAR(fecha) = :aniox AND  MONTH(fecha) = :mesx GROUP BY anio, mes

Uso fetchcolumn() para decidir si inserta o si actualiza, el problema lo tengo en la actualización.

con este codigo logré que me sume lo que voy agregando por determinado mes:

Código MySQL:
Ver original
  1. UPDATE comprames SET total = :total + total, fecha = :fecha WHERE YEAR(fecha) = $fechaanio AND  MONTH(fecha) = $fechames

El problema es que si edito el valor de un registro al final del mes no sera correcto x lo que necesitaría solo actualizar los valores de todo ese mes, intente hacer esto:

Código MySQL:
Ver original
  1. UPDATE comprames T1 SET T1.total = (SELECT SUM(T2.importe) total
  2.         FROM compras T2 WHERE YEAR(T2.fecha) = $fechaanio AND MONTH(T2.fecha) = $fechames), fecha = :fecha
  3.         WHERE YEAR(T1.fecha) = $fechaanio AND MONTH(T1.fecha) = $fechames")

pero el problema radica en fecha = :fecha con esto no hace la actualización, pero si no lo pongo si me actualiza pero ocurre algo por ejemplo que si hoy 4 de septiembre agrego una compra del mes pasado "agosto" pues ese mes me lo pone a la fecha de hoy y es ahí donde malograría toda la data, no se si me deje entender :( alguien sabe de alguna solución o tal vez otra forma de hacer lo que necesito?.

Gracias de antemanos por sus respuesta.

Última edición por gnzsoloyo; 04/09/2015 a las 03:10

Etiquetas: campo, fecha, join, registro, según, select, sql, tabla
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 19:01.